我已经在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]方法中读取所选的radiobutton值? 在我的HTTPPOST方法中,存储了预选值,而不是用户选择的值:
[HTTPPOST]
public ViewResult Edit(SomeOrder se)
{
string chosenValue=se.TypeDrink;// always the old selected value
}
答案 0 :(得分:1)
如果您的帖子操作类似
[HttPost]
public ViewResult Edit(SomeOrder model)
{
// should get it like
model.TypeDrink;
}
这是在mvc中使用模型绑定。
您还可以查看Request.Form["TypeDrink"]
以获取值,但不建议使用
答案 1 :(得分:1)
你的模特是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace radiotest.Models
{
public class SomeOrder
{
public string TypeDrink { get; set; }
}
}
您的观点是index.cshtml
@model radiotest.Models.SomeOrder
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
<fieldset>
<div class="editor-field">
@Html.RadioButtonFor(m => m.TypeDrink, "1") Tea
@Html.RadioButtonFor(m => m.TypeDrink, "2") Coffee
@Html.RadioButtonFor(m => m.TypeDrink, "3") Juice
</div>
<div> <input type="submit" value="Submit" /></div>
</fieldset>
}
HTTP Get和Post中的控制器是:
using radiotest.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace radiotest.Controllers
{
public class TestController : Controller
{
public ActionResu`enter code here`lt Index()
{
SomeOrder se = new SomeOrder{ TypeDrink="3" };
return View(se);
}
[HttpPost]
public ActionResult Index(SomeOrder model)
{
//model.TypeDrink gives you selected radio button in HTTP POST
SomeOrder se = new SomeOrder {TypeDrink = model.TypeDrink };
return View(se);
}
}
}
答案 2 :(得分:1)
您的视图在单选按钮前包含@Html.EditorForModel()
。 EditorForModel()
将为模型中的每个属性生成表单控件,以便为属性TypeDrink
生成控件。根据应用于您的媒体资源的属性以及您可能拥有的任何EditorTemplates
,可能会在隐藏的输入中生成。
因为您的表单首先回发EditorForModel
生成的输入的名称/对值,输入的值将绑定到您的模型,单选按钮的值将被{忽略{1}}。
从视图中删除DefaultModelBinder
,模型将根据单选按钮的值进行绑定。