如何在 HTTPPOST 中读取 HTML.RadioButtonFor 的选定值?
How to read a chosen value of HTML.RadioButtonFor in HTTPPOST?
我在 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
}
如果您的 post 操作类似于
[HttPost]
public ViewResult Edit(SomeOrder model)
{
// should get it like
model.TypeDrink;
}
这是利用 mvc 中的模型绑定。
您也可以查看 Request.Form["TypeDrink"]
来获取值,但不推荐这样做
您的模特是:
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);
}
}
}
您的视图在单选按钮之前包含 @Html.EditorForModel()
。 EditorForModel()
将为模型中的每个 属性 生成表单控件,因此它将为 属性 TypeDrink
生成一个控件。根据应用于您的 属性 的属性,以及您可能拥有的任何 EditorTemplates
,它可能会在隐藏的输入中生成。
因为您的表单首先回发 EditorForModel
生成的输入的 name/pair 值,输入的值将绑定到您的模型,单选按钮的值将是被 DefaultModelBinder
.
忽略
从您的视图中删除 EditorForModel
,模型将根据单选按钮的值进行绑定。
我在 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
}
如果您的 post 操作类似于
[HttPost]
public ViewResult Edit(SomeOrder model)
{
// should get it like
model.TypeDrink;
}
这是利用 mvc 中的模型绑定。
您也可以查看 Request.Form["TypeDrink"]
来获取值,但不推荐这样做
您的模特是:
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);
}
}
}
您的视图在单选按钮之前包含 @Html.EditorForModel()
。 EditorForModel()
将为模型中的每个 属性 生成表单控件,因此它将为 属性 TypeDrink
生成一个控件。根据应用于您的 属性 的属性,以及您可能拥有的任何 EditorTemplates
,它可能会在隐藏的输入中生成。
因为您的表单首先回发 EditorForModel
生成的输入的 name/pair 值,输入的值将绑定到您的模型,单选按钮的值将是被 DefaultModelBinder
.
从您的视图中删除 EditorForModel
,模型将根据单选按钮的值进行绑定。