你應該使用語法
@Html.DropDownListFor(model => model.Language, new SelectList(Test.Configuration.GetLanguages().Select(x => new SelectListItem() { Text = x.Text, Value = x.Value })))
然後MVC知道使用該字段來存儲從下拉列表中選擇的選項。
每下面的評論,我這是怎麼會在模型聲明語言:
PageViewModel.cs
public class PageViewModel {
...
public string Language { get; set; }
public SelectList Languages { get; set; }
}
HomeController.cs
public ActionResult Index(PageViewModel pageViewModel)
{
//put breakpoint on the return view and after you submit a selection you'll see that the pageViewModel argument has the language of what you selected
return View(new PageViewModel
{
Language = "English",
Languages = new SelectList(new List<string>
{
"English",
"Danish",
"Spanish",
"French"
})
});
}
Index.cshtml
@model MvcPlayground.Controllers.PageViewModel
<h2>Languages!</h2>
@using (Html.BeginForm())
{
@Html.DropDownListFor(model => model.Language, Model.Languages)
<input type="submit"/>
}
MVC將使用語言屬性來確定回發中的選定項目,只要您正確傳遞它即可。
您的模型是否包含名爲'Languages'的屬性? –
而不是'Html.DropDownList'使用強類型'Html.DropDownListFor' –