我已经在SO上阅读了很多答案,但是它不适合我。
我有模特:
class SomeOrder
{
public string TypeDrink {get; set;}
}
控制器:
public ViewResult Edit(int id)
{
SomeOrder se = newSomeOrder{ TypeDrink=3 };
return View(se);
}
并查看:
@Html.EditorForModel @Html.RadioButtonFor(m=>m.TypeDrink, "1") Tea
@Html.RadioButtonFor(m=>m.TypeDrink, "2") Coffee
@Html.RadioButtonFor(m=>m.TypeDrink, "3") Juice
如何在[HTTPPOST]方法中读取单选按钮的选定值?
在我的HTTPPOST方法中,存储了预先选择的值,而不是用户选择的值:
[HTTPPOST]
public ViewResult Edit(SomeOrder se)
{
string chosenValue=se.TypeDrink;// always the old selected value
}
最佳答案
您的视图在单选按钮之前包含@Html.EditorForModel()
。 EditorForModel()
将为模型中的每个属性生成表单控件,因此它将为属性TypeDrink
生成控件。根据应用于属性的属性以及您可能拥有的任何EditorTemplates
,它可能会在隐藏的输入中生成。
因为您的表单随后会先发布由EditorForModel
生成的输入的名称/对值,所以输入的值将绑定到您的模型,并且DefaultModelBinder
会忽略单选按钮的值。
从视图中删除EditorForModel
,将根据单选按钮的值绑定模型。