Ich habe eine Html.DropDownListFor in einer Editor-Vorlage, die einen ausgewählten Wert Punkt setzt. Wenn ich die Editor-Vorlage durch eine Teilansicht (Kopieren von HTML-Code in der Editor-Vorlage in die Teilansicht) ersetzen, funktioniert es.Html.DropDownListFor im Editor Vorlage nicht gesetzt Wert
Beispielcode
Modell:
public class MainItemViewModel
{
public int MainItemId { get; set; }
public ItemViewModel ItemViewModel { get; set; }
}
public class ItemViewModel
{
public int ItemId { get; set; }
public string Text { get; set; }
public IEnumerable<SelectListItem> ItemSelectList { get; set; }
}
Controller:
public class DropDownController : Controller
{
//
// GET: /DropDown/
public ActionResult Index()
{
var mainItemViewmodel = new MainItemViewModel();
mainItemViewmodel.MainItemId = 2;
mainItemViewmodel.ItemViewModel = new ItemViewModel();
mainItemViewmodel.ItemViewModel.ItemId = 2;
mainItemViewmodel.ItemViewModel.Text = "bla5";
List<SelectListItem> someItems = new List<SelectListItem>(){new SelectListItem(){Value = "1",Text = "Test1"},new SelectListItem(){Value = "2",Text = "Test2"}};
mainItemViewmodel.ItemViewModel.ItemSelectList = someItems;
return View(mainItemViewmodel);
}
[HttpPost]
public ActionResult Index(MainItemViewModel mainItemViewModel)
{
return RedirectToAction("Index");
}
}
DropDown \ Index.chtml
@model MainItemViewModel
@using (Html.BeginForm())
{
<br/>
@Html.TextBoxFor(model => model.MainItemId)
<br/>
@Html.EditorFor(model => model.ItemViewModel)
<input name="submit" type="submit" value="submit"/>
}
DropDown \ EditorTemplates \ ItemV iewModel.chtml
@model ItemViewModel
@{
@Html.DropDownListFor(model => model.ItemId, Model.ItemSelectList, "Select Item");
<br/>
@Html.TextBoxFor(model => model.Text);
}
Die DropDownListFor (Modell => model.ItemId, Model.ItemSelectList "Select Item"); nicht wählen 2.Ich dachte, es tatsächlich zu automatisch wählen soll für Sie
Ich habe die gleiche Sache außer tun in einem anderen eine andere Ansicht Modell, das für alle meine Dropdownlist und es hat geklappt.
Gibt es ein Problem mit Editor Vorlagen und Dropdownlist, ich habe bei den meisten Antworten auf dieses Problem sah, und ich sehe keine schlüssige Antwort, die arbeitet ich an diesen Lösungen gesucht haben
Problem binding selected value to DropDownListFor inside Editor Template
DropDownListFor - does not select “Selected” value
will ich genau mache, dass durch die ItemId Einstellung vor dem Senden ViewModel.Wenn ich eine Teilansicht mit genau gleichen Modell es funktioniert.Meine Frage wäre, warum funktioniert es mit einer Teilansicht (gleiches Modell) anstelle der editorFor.Right jetzt verwende ich die Teilansicht – kwiri
Ja, ich danke aber Es ist nicht das, wonach ich wirklich gesucht habe. Ich habe ein Debugging mit der eigentlichen MVC-Quelle (RTM3) gemacht und ich habe es gesehen dass sie vielleicht etwas nicht richtig sind. Es bricht wegen der Art und Weise, wie der Eigenschaftsname verwendet wird, um den voreingestellten Wert zu erhalten. Deshalb wählt meine Dropdown-Liste im Editor für Vorlage nicht den richtigen Wert aus, während sie in einer Teilansicht funktioniert machte eine einfache Test-App mit der mvc-Quelle und es hat die Dropdown-Breaks.Strange Ich habe festgestellt, dass für Textboxen eine andere Methode zum Abrufen der Eigenschaftswerte verwendet wurde. – kwiri
Die Idee ist, ich möchte die Dropdown-Liste für den normalen Weg verwenden, ohne zusätzlichen Code hinzufügen zu müssen, um eine Auswahl zu treffen.Ich habe die Dropdown-Liste so verwendet und es hat gut funktioniert, es ist nur diese bestimmte Ansicht, wo ich die Editor-Vorlage (mit dem Dropdown) in einer Ansicht wie oben beschrieben habe – kwiri