编辑器模板中的Html.DropDownListFor未设置选定值

kwi*_*iri 5 asp.net-mvc asp.net-mvc-3

我在编辑器模板中有一个Html.DropDownListFor,它点设置一个选定的值. 如果我用部分视图替换编辑器模板(将编辑器模板中的HTML粘贴到部分视图中)它可以工作.

示例代码

模型:

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; }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

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");
    }

}
Run Code Online (Sandbox Code Playgroud)

下拉\ 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"/>
}
Run Code Online (Sandbox Code Playgroud)

下拉\ EditorTemplates\ItemViewModel.chtml

   @model ItemViewModel
   @{
   @Html.DropDownListFor(model => model.ItemId, Model.ItemSelectList, "Select Item");
   <br/>

    @Html.TextBoxFor(model => model.Text);
   }
Run Code Online (Sandbox Code Playgroud)

DropDownListFor(model => model.ItemId,Model.ItemSelectList,"Select Item"); 没有选择2.我认为它实际上应该自动为你选择

我一直在做同样的事情,除了在我的所有下拉列表中有另一个视图模型,它已经工作正常.

编辑器模板和下拉列表是否有问题,我已经查看了这个问题的大多数答案,我没有看到任何有效的答案,我已经看过这些解决方案

将选定值绑定到编辑器模板内的DropDownListFor时出现问题

DropDownListFor - 不选择"Selected"值

Wah*_*tar 0

ItemId我想你有一个以你的名字命名的财产ItemViewModel

然后确保在将 ViewModel 发送到 View 之前在 Controller 中设置它的值:

public ActionResult Edit()
{
   var viewModel = new MainViewModel
                              {
                                  ItemViewModel = new ItemViewModel{ ItemId = 7 }
                              };
   return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)

如果您想要更多选择,请在这里查看我的答案