ASP.NET MVC 2 - 如何从下拉到我的视图模型中获取所选值?

时间:2010-05-28 18:40:09

标签: c# asp.net-mvc drop-down-menu html-helper

我正在通过

创建一个下拉列表

<%= Html.DropDownList("data.Language", Model.LanguageOptions) %>

并希望通过自动模型绑定将其值读回到我的LanguageModel viewmodel:

public ActionResult Save(LanguageModel data)

但是,调用Save方法时,data.Language为null。

如何从我的data.Language下拉列表中获取所选值。语言?

2 个答案:

答案 0 :(得分:0)

摆脱数据。

<%= Html.DropDownList("Language", Model.LanguageOptions) %>

或尝试:

<%= Html.DropDownListFor(m => m.Language, Model.LanguageOptions) %>

(虽然m.Langage可能不对 - 这取决于您的视图模型的设置方式)

答案 1 :(得分:0)

我不知道你的控制器动作和模型是怎样的,但这绝对有效:

型号:

public class LanguageModel
{
    public string Language { get; set; }
    public IEnumerable<SelectListItem> LanguageOptions
    {
        get
        {
            return new[] 
            {
                new SelectListItem { Value = "en", Text = "English" },
                new SelectListItem { Value = "fr", Text = "French" },
            };
        }
    }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new LanguageModel());
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(LanguageModel data)
    {
        return View(data);
    }
}

查看:

<% using (Html.BeginForm()) { %>
    <%= Html.DropDownList("Language", Model.LanguageOptions) %>
    <input type="submit" value="OK" />
<% } %>

<div><%= Html.Encode(Model.Language) %></div>

当然,如果您使用的是ASP.NET MVC 2.0,则最好使用强类型DropDownListFor帮助程序。