我有一个使用此模型的表单:
public class MyModel
{
public User SalesManager {get;set;}
public string Title {get;set;}
...
}
使用DropDown进行渲染,给出HtmlHelper扩展中的Users列表:
<label for="SalesManager">Sales Manager</label>
<select id="SalesManager" name="SalesManager">
<option value="7">James Morrison</option>
<option selected="selected" value="300">Ray Manzarek</option>
<option value="302">Robby Krieger</option>
<option value="302">John Densmore</option>
</select>
和这样的行动:
[HttpPost]
public ActionResult SomeAction(FormCollection form)
{
...
}
我收到了SalesManager属性的验证ModelState
错误:The value '302' is invalid
。我怎样才能接受一个int值,并担心以后实例化我的用户(例如在ModelBinder中)。或者我只是接近这个错误?
答案 0 :(得分:0)
您需要在MyModel上声明一个int属性,比如SelectedUser,并将渲染的选择更改为
<select id="SelectedUser" name="SelectedUser">
如果您使用的是Html助手,可以使用。
HtmlHelper.ListBoxFor("SelectedUser", Model.YourSelectList")
答案 1 :(得分:0)
您的HTML应如下所示:
<select id="SalesManager_UserId" name="SalesManager.UserId">
因为您不能将值302
添加到User
等复杂对象。
所以助手应该是这样的:
<%= Html.DropDownListFor(x => x.User.UserId, Model.PossibleValues) %>