使用ASP.NET和MVC,我可以在文本框上使用自定义类将数据从View传递到Model,然后返回到我的控制器,如下所示:
@Html.TextBoxFor(m => m.first_name, new { @class = "form-control", tabindex = 1 })
以同样的方式,我想将自定义下拉选择器中的字符串返回到m.affiliation
。我的自定义输入如下:
<select class="selectpicker" name="affiliation" id="affiliation" style="margin-top:1em;" data-width="100%">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
如何使用Razor正确替换上面的代码块,以确保将此数据传递给我的模型的联属成员?
答案 0 :(得分:1)
基本上,如果你想要的是将所选选项传递给你的模型,你没有做错任何事。唯一缺少的是期权价值。因此,假设您的模型具有affiliation
属性,那么您可以在不使用帮助程序的情况下执行以下操作...
<select name="affiliation">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
</select>
或者,您可以通过使用HTML帮助程序实现相同的目标......
@Html.DropDownListFor(m => m.affiliation, new List<SelectListItem>()
{
new SelectListItem(){Text = "Option 1", Value = "Option 1"},
new SelectListItem(){Text = "Option 2", Value = "Option 2"},
new SelectListItem(){Text = "Option 3", Value = "Option 3"}
})
或者,如果您的模型已将联属列表列为List<string>
或IEnumarable<string>
...
@Html.DropDownListFor(m => m.affiliation, Model.affiliations_list.Select(x => new SelectListItem()
{
Value = x,
Text = x
}))