如何读取选定的HTML值.HTTPPOST中的RadioButtonFor
本文关键字:HTML HTTPPOST RadioButtonFor 中的 何读取 读取 | 更新日期: 2023-09-27 18:09:22
我在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
,模型将根据单选按钮的值进行绑定。
如果你的post action是
[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);
}
}
}