2012-04-02 4 views
1

in meinem Controller i ein id bin vorbei, es in einem ViewBag speichern und sie dann aus der Sicht zugreifen und es ist ein NulleintragNull Eintrag beim Passieren von Daten von Controller zu einer Ansicht Asp.net MVC3

gibt diese die Steuerung ist:

public ActionResult Create(int referenceID) 
    { 
     ViewBag.id = referenceID; 
     // ViewBag.type = type; 
     // ViewBag.title = title; 
     ViewBag.userID = new SelectList(db.UserProfiles, "userID", "firstName"); 
     return View(); 
    } 

und das ist, wie ich es aus meiner Sicht bin Zugriff

 @{ Model.referenceID = ViewBag.id ; } 

Wenn ich zu/Einladung gehe/Create/1 its me Nulleintrag e geben Fehler.

+0

Erstens, was ist der genaue Fehler? Zweitens, warum weisen Sie einer Model-Eigenschaft in der Ansicht zu? Hat Ihr Modell überhaupt eine referenceID-Eigenschaft? –

+0

Ja das Modell hat die ReferenzID !! kann ich es vom Controller einstellen. Vorausgesetzt, dass ich 2 Methoden zum Erstellen und Veröffentlichen habe. –

+0

Von was ich sehe dein Modell == null. Ihr Controller gibt nichts zurück. Es sollte Return View (someViewModel) sein –

Antwort

0

Zuerst müssen Sie sicherstellen, dass ein Routing-Pfad für /Einladung/Erstellen/{ID} in Ihrer Routentabelle ... in global.asax ... konfiguriert ist. in Ihrem das RegisterRoutes Methode der global.asax ... stellen Sie sicher, Sie haben etwas wie ...

// Invitation/Create 
     routes.MapRoute(
      "Create Invitation", 
      "Invitation/Create/{id}", 
      new { controller = "Invitation", action = "Create", id= 0 } 
     ); 

Wenn referenceId in Create-Methode ist optional ... Sie müssen die Art der referenceId ändern int? (Nullable-int) ... wie unten

gezeigt
public ActionResult Create(int? referenceID) 
{ 
    // if referenceID is null then you may redirect the user to a view of your choice.. 
    // then what ever logic you may wanna write... 
} 

Hope this helps ...

Update:

können Sie versuchen, bewegen Sie diesen Code Karte Route Ihre erste Karte Route Code zu sein ?

Wahrscheinlich hätte ich Ihre Frage besser lesen sollen ... in Ihrer Erstellungsmethode geben Sie kein Modell an Ihre Ansicht zurück ... und wenn Sie Model.referenceId sagen ... sollte es ein Modell geben (das enthält referenceID als Eigenschaft) zurückgegeben von Ihrer Aktionsmethode erstellen ... die in Ihrem Fall fehlt

+0

Ja die Route ist konfiguriert und die ReferenceID ist nicht optional –

+0

@iyadalaqel können Sie Ihre Ansicht und Routing-Code als auch ... Ich meine den gesamten Routing-Code ...? Siehe auch mein Update ... – NiK

+0

sicher ,, es ist der Standard, ich habe es nicht geändert. und viele andere Methoden verwenden das gleiche Format Controller/Action/ID und sie arbeiten –

2

Basierend auf dem Code, den Sie angegeben haben, würde ich sagen, Ihr Modell ist null, weil Ihre Aktion nichts an die übergeben Aussicht. Haben Sie versucht, die ViewBag.id nur auf der Seite anzuzeigen?

Verwandte Themen