2017-02-01 6 views
0

Ich versuche Teilansichten zu verwenden, aber ich bin völlig verloren. Ursprünglich habe ich versucht, dynamische Daten an die Teilansicht zu übergeben, aber am Ende bekam ich eine 403 verboten, wenn Sie die F12-Taste des Google Browsers drücken.Nullansicht Tasche und Teilansicht

Teilansicht, die ich auf einem Feld Denken reduziert haben, dass es Daten zu laden erlauben würde

 <table cellpadding="1" border="1"> 
      <tr> 
      <th> 
       FIELD LBL1 
      </th>   
      </tr> 

     @foreach (MvcProgram.Models.LIST_FULL item in @ViewBag.ListFull) 
     { 
      <tr> 
       <td> 
        @item.FIELD1_DATA 
       </td> 
      </tr> 
    } 

    </table> 

Der Fehler, der mir zeigt, dass mvc keine dynamischen Daten unter Verwendung einer Ansicht Tasche schieben kann, da es verboten das. Also verwerfe ich diese Idee, da ich alle möglichen Arten von Workarounds ausprobiert habe, die scheitern. Jetzt möchte ich nur eine Teilansicht mit statischen Daten in einer Ansichtstasche füllen, aber ich denke, da es keinen Wert gibt, um die Liste zu erstellen, wenn die Seite in der Erstellungsansicht ist, die sofort fehlschlägt. Mit diesem Fehler:

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Und es hört auf meine Teil foreach Schleife Ansicht

 @foreach (ComputerProgram.Models.LIST_FULL item in @ViewBag.ListFull) 

So kann MVC auf alle Teilansichten verwenden, um auf Sicht erstellen? Meine Liste wird unter Verwendung einer ID aus der Dropdown-Liste erstellt, aber natürlich gibt es keine Auswahl in der Erstellungsansicht, bis das Formular von den Benutzern interagiert wurde.

Also meine Frage ist MVC in der Lage, sogar partielle Ansichten in create view zu machen oder ist dies etwas, was Sie nur in Webforms aufgrund einiger Einschränkungen von MVC tun können.

Die CREATE VIEW

 <div class="col-sm-6"> 

       <div class="form-horizontal" style="display:none" id="PV_IssueList"> 

       @Html.Partial("_VehIssuesListPartial") 

       </div> 
      </div> 

Der einzige Weg, ich scheine Ansicht zu erhalten, um diese MVC erstellen die Teilansicht angezeigt ist, die Liste für die Ansicht Tasche zu bauen und füllen Sie es mit einem bekannten Rekord von es zu rendern. Das kann nicht stimmen: Sind Teilansichten nur auf dem Bildschirm verwendbar, wo bereits Daten auf dem Bildschirm sind?

der Code-Controller sowohl derjenige, der erhalten und Postleitzahl sagt:

// GET: VRS_REQUEST/Create********************************** 
    public ActionResult Create() 
    { 
      some code stuff 

     ViewBag.VehIssuesList = GetList(808); //Force it to get something so that the page loads 

     return View(model); 

    } 

Der Beitrag erstellen Code:

// POST: VRS_REQUEST/Create 
     [HttpPost] 
     [ValidateAntiForgeryToken] 


     public ActionResult Create(int RES_ID, FormCollection Collection,  [Bind(Include = Some Fields.... 

     { 
      //ViewBag.ListFull = GetList(RES_ID); 

      //UpdateList(int.Parse(Collection["RES_ID"])); // Was part of the attempt at dynamic data for partial view that shows forbidding 


      ... CODE THAT DOES STUFF 

       return RedirectToAction("Index"); 
      } 
      return View(model); 
     } 

Die Art und Weise der aktuelle Code arbeiten, ist es die Dropdown-Liste ignoriert und nur füllt mit dem Wert, den ich fest codiert habe. Einige werden sagen, warum ich eine Aussichtstasche benutze, nun, das ist es, was ich weiß. Ich verstehe überhaupt keine Modelle. Wenn dies nicht mit create views möglich ist, weil der Bildschirm leer ist, dann cool das für mich arbeiten - ich muss das nur wissen.

Hier ist mein Code, wie ich die Idee von versuchen, dies mit dynamischen Daten wieder zu tun, MVC sagt, es ist verboten ist.

Wenn ich dies aus der Funktion create controller get entfernen, wird die Seite nicht geladen und ich bekomme den Null-Fehler;

 ViewBag.VehIssuesList = GetList(808); 

Ich habe für die Seite einen Wert zu zwingen ... zu laden, so auch in diesem wegen mir ist versucht, dies auf der Ansicht erstellen zu tun und MVC nicht damit umgehen können?

Antwort

0

_WidgetListPartial Die @if-Anweisung behandelt die Null-Situation. wenn die Daten für die Teilansicht als null zurückkommen.

@if (@ViewBag.AList != null) 
    { 
    <table cellpadding="1" border="1"> 
    <tr> 
     <th> 
      Widget Name 
     </th> 
    </tr> 

@foreach (MvcProgramX.Models.LIST_FULL item in @ViewBag.AList) 
    { 
    <tr> 
     <td> 
      @item.WidgetName 
     </td>   
    </tr> 
    } 

    </table> 
    }