Ich versuche, MVC2, C# und Linq zu Entities alle in einem Projekt zu lernen (ja, ich bin verrückt) und ich habe einige Probleme mit DropDownListFor und die Übergabe der SelectList daran. ASP.Net MVC2 DropDownListFor
Dies ist der Code in meinem Controller:
public ActionResult Create()
{
var Methods = te.Methods.Select(a => a);
List<SelectListItem> MethodList = new List<SelectListItem>();
foreach (Method me in Methods)
{
SelectListItem sli=new SelectListItem();
sli.Text = me.Description;
sli.Value = me.method_id.ToString();
MethodList.Add(sli);
}
ViewData["MethodList"] = MethodList.AsEnumerable();
Talkback tb = new Talkback();
return View(tb);
}
und ich habe Probleme die DropDownListFor
zu bekommen versucht, die MethodList
in ViewData
zu nehmen. Wenn ich versuche:
<%:Html.DropDownListFor(model => model.method_id,new SelectList("MethodList","method_id","Description",Model.method_id)) %>
Es Fehler heraus mit der folgenden Meldung
DataBinding: 'System.Char' does not contain a property with the name 'method_id'.
weiß ich, warum dies so ist, wie es MethodList
als String nimmt, aber ich kann nicht herausfinden, wie man es um die SelectList
zu nehmen. Wenn ich die folgenden mit einem normalen DropDownList
tun: mit diesem
<%: Html.DropDownList("MethodList") %>
Es ist ganz glücklich.
Kann jemand helfen?
Die Talkback-Klasse ist eine L2E-Tabellenklasse. Es enthält eine method_id, die eine 0..1-Beziehung mit der Methods-Tabelle hat, daher habe ich nur die Scalar-Eigenschaft method_id aus der Talkback-Tabelle und die Method-Navigationseigenschaft mit der bestimmten Methode in Bezug auf die method_id dieses Datensatzes. So kann ich die Methode in Bezug auf einen bestimmten Talkback-Datensatz bekommen, die, da dies eine Create-Aktion ist, sowieso null wäre. Ich kann jedoch nicht über das Talkback-Modell auf alle Methoden zugreifen. Hoffnung, die Sinn macht! – hermiod
Mit zusätzlichen Code aktualisiert. Versuchen Sie es und sehen Sie, ob das für Sie funktioniert! – Tejs
Jetzt bekomme ich den Fehler 'Keine Überladung für Methode' DropDownListFor 'nimmt 1 Argumente'. Vielleicht habe ich MVC falsch verstanden, aber ich dachte, dass es möglich wäre, alle Ansichten aus dem Datenbankmodell selbst zu generieren und bei Bedarf zu ändern. Ich habe einige Beispiele gesehen, in denen ich willkürliche Listen an die View übergeben habe (über ViewData, auf dem mein ursprünglicher Code basierte), gibt es eine Möglichkeit, dies in meiner Situation zu funktionieren? Danke für Ihre Hilfe Tejs – hermiod