1

Ich bekomme ein Problem beim Füllen von Daten im Dropdown ... Ich denke, da ich eine Teilansicht verwende, warum Es schafft ein Problem. Hier ist mein Code:Es gibt kein ViewData-Element vom Typ 'IEnumerable <SelectListItem>' mit dem Schlüssel 'course'

public ActionResult Register() 
{ 
    var course = from Course c in Enum.GetValues(typeof(Course)) 
        select new { ID = c, Name = c.ToString() }; 
    ViewData["course"] = new SelectList(course, "ID", "Name"); 
    return view(); 
} 

public enum Course 
{ 
    [Display(Name = "Basic Level", ShortName = "Basic")] 
    Basic = 1, 

    [Display(Name = "Intermidiate Level")] 
    Intermidiate = 2, 

    [Display(Name = "Advance Level")] 
    Advance = 3 
} 

Das ist meine Hauptansicht:

<table style="margin-top: 10px"> 
<tr> 
    <td valign="top"> 
     @{Html.RenderPartial("LogOnPartial");} 
    </td> 
    <td width="20px"> 
    </td> 
    <td align="left"> 
     @{Html.RenderPartial("CreatePartial");} 
    </td> 
</tr> 

ich dies in meiner Teilansicht geschrieben habe (CreatePartial):

<td> 
     @Html.DropDownList("course"); 
</td> 

Bitte helfen mich

Antwort

1

Das sollte funktionieren. Ich kann das Problem nicht reproduzieren.

Modell:

public enum Course 
{ 
    [Display(Name = "Basic Level", ShortName = "Basic")] 
    Basic = 1, 

    [Display(Name = "Intermidiate Level")] 
    Intermidiate = 2, 

    [Display(Name = "Advance Level")] 
    Advance = 3 
} 

Controller:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var course = from Course c in Enum.GetValues(typeof(Course)) 
        select new { ID = c, Name = c.ToString() }; 
     ViewData["course"] = new SelectList(course, "ID", "Name"); 
     return View(); 
    } 
} 

Index.cshtml Ansicht:

@{Html.RenderPartial("CreatePartial");} 

CreatePartial.cshtml Teil:

@Html.DropDownList("course") 

Ich vermute, dass dies nicht funktioniert, nachdem Sie das Formular senden, nicht wenn es zum ersten Mal geladen wird. Und das könnte passieren, weil Sie wahrscheinlich vergessen haben, die ViewData["course"] in Ihrer [HttpPost] Aktion neu zu befüllen und dennoch versucht, dieselbe Ansicht erneut anzuzeigen. Wenn Sie die gleiche Ansicht erneut anzeigen möchten, stellen Sie sicher, dass Sie die ViewData["course"] auf die gleiche Weise wie in Ihrer GET-Aktion ausfüllen, die ursprünglich zum Rendern der Seite verwendet wurde.

Eine andere Sache, auf die Sie achten sollten, ist, dass Sie keinen anderen ViewData["course"] Wert haben, der widersprüchlich ist.

+0

hallo nicht so etwas passiert ya wie du sagtest ich habe keine post-Methode..es gibt Problem, wenn ich die Seite laden ... – user1274646

+0

@ user1274646, das ist seltsam. Hast du mein Beispiel versucht? Ich habe es in einer neuen ASP.NET MVC 3-Anwendung getestet und es hat gut funktioniert. –

+0

hey ich versuchte deine lösung in einem neuen projekt es funktioniert aber die selbe lsung habe ich in meinem projekt implementiert und es funktioniert nicht ... ich bekomme den gleichen fehler..bitte kannst du mir eine andere sache vorschlagen oder jus rechk meinen code up wenn ich einen kleinen Fehler gemacht habe – user1274646