我已经在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,将根据单选按钮的值绑定模型。

09-16 09:53