在视图中,我有很多RadioButtons
,每个ID都是唯一的。当用户在控制器中选择其中一个时,我想采用ID
和VALUE
我如何做到这一点....我尝试使用formCollection
,但在这里我只能取值...
@Html.RadioButton("BookType", "1", new { id = "100" })
<br>
Above code generates Below code
<br/>
< input id="100" name="BookType" type="radio" value="1" >
问题是如何通过控件中的'POST'
操作获取ID和VALUE。
答案 0 :(得分:0)
您可以在发布操作中编写代码,如下所示:
var radbtn = Request.From["100"];
答案 1 :(得分:0)
你没有,那不是表单控件的工作方式。
提交表单时,系统会提交name
和value
,但checkbox
和radio
输入等情况除外。
仅当checkbox
为checked
或radio input
为checked
时name/value
已发布。
你需要重新思考你想要实现的目标。如果你能提供一些你想要达到的信息,我相信我或其他任何人都可以提供进一步的帮助。
答案 2 :(得分:0)
我建议你使用视图模型。请看下面的例子:
namespace MvcApplication1.Controllers {
public class TheOption {
public string Id { get; set; }
public string Value { get; set; }
public bool? Checked { get; set; }
}
public class FooController : Controller {
//
// GET: /Foo/
public ActionResult Index() {
var options = new List<TheOption> {
new TheOption {Id = "One", Value = "The One"},
new TheOption {Id = "Two", Value = "The Two"},
new TheOption {Id = "Hundred", Value = "The Hundred"},
};
return View(options);
}
[HttpPost]
public ActionResult Index(List<TheOption> options) {
return View(options);
}
}
}
现在您需要为TheOption
模型创建编辑器模板。只需在〜\ Views \ Shared \文件夹下创建名为 EditorTemplates 的文件夹即可。添加新视图作为编辑器模板。将此编辑器模板命名为与模型名称(TheOption
)匹配。
以下是〜\ Views \ Shared \ EditorTemplates \ TheOption.cshtml 的内容:
@model MvcApplication1.Controllers.TheOption
<div>
@Html.RadioButtonFor(m => m.Checked, true, new { id = Model.Id + "_selected" })
@Html.RadioButtonFor(m => m.Checked, false, new { id = Model.Id }) @Model.Value
@Html.HiddenFor(m => m.Id)
@Html.HiddenFor(m => m.Value)
</div>
现在转到主视图(Index.cshtml)并简单地输入以下代码:
@model System.Collections.Generic.List<MvcApplication1.Controllers.TheOption>
@using (Html.BeginForm()) {
@Html.EditorFor(m=>m)
<button type="submit">Save</button>
}
完成!希望这会有所帮助:)