在MVC的部分视图中创建DropDownListFor

use*_*007 3 model-view-controller asp.net-mvc

我创建了一个显示下拉列表的局部视图

html.DropDownListFor(m => m.SelectOption, Model.SelectOption)

我得到一个Object的错误而不是对实例的引用....

如果我把上面的代码放到我的视图(aspx)中它工作正常没问题.但在局部视图中,我得到了错误.

我的局部视图中的文本框控件使用相同的模型可以正常工作.我只是无法在DropDownList周围.

Dar*_*rov 12

您实际上并未显示如何调用局部视图以及控制器操作是否实际将模型传递给此视图.

确保控制器已正确初始化模型.因此,如果我们假设您有以下模型:

public class MyViewModel
{
    public string SelectedOption { get; set; }
    public IEnumerable<SelectListItem> SelectOptions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

以及以下控制器操作:

public ActionResult Foo()
{
    var model = new MyViewModel();
    model.SelectOptions = new[]
    {
        new SelectListItem { Value = "1", Text = "item 1" },
        new SelectListItem { Value = "2", Text = "item 2" },
        new SelectListItem { Value = "3", Text = "item 3" },
    };
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

十,你可以有一个相应的视图,将调用部分:

@model MyViewModel
@Html.Partial("_MyPartial", Model)
Run Code Online (Sandbox Code Playgroud)

_MyPartial.cshtml:

@model MyViewModel
@Html.DropDownListFor(x => x.SelectedOption, Model.SelectOptionOptions)
Run Code Online (Sandbox Code Playgroud)

请注意您在视图模型上需要2个属性才能创建下拉列表=>标量属性(SelectedOption)将用于绑定选定的值和集合属性,该属性将包含您要在其中显示的值列表下拉(SelectOptionOptions).

在您的代码中,您使用相同的属性,这两个错误:

@Html.DropDownListFor(m => m.SelectOption, Model.SelectOption)
Run Code Online (Sandbox Code Playgroud)