在MVC的部分视图中创建DropDownListFor

时间:2012-01-22 22:37:52

标签: asp.net-mvc model-view-controller

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

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

我收到Object的错误,而不是对实例的引用....

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

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

1 个答案:

答案 0 :(得分:12)

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

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

public class MyViewModel
{
    public string SelectedOption { get; set; }
    public IEnumerable<SelectListItem> SelectOptions { get; set; }
}

以及以下控制器操作:

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);
}
十,你可以有一个相应的视图,它会调用一个部分:

@model MyViewModel
@Html.Partial("_MyPartial", Model)

_MyPartial.cshtml

@model MyViewModel
@Html.DropDownListFor(x => x.SelectedOption, Model.SelectOptionOptions)

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

在你的代码中,你使用相同的属性是错误的:

@Html.DropDownListFor(m => m.SelectOption, Model.SelectOption)