asp.net-mvc – 使用HtmlHelper类时,MVC单选按钮列表未分组
发布时间:2020-12-16 00:15:17 所属栏目:asp.Net 来源:网络整理
导读:难以创建组合在一起的单选按钮列表,特别是在MVC 3中,但这也适用于MVC 2. 当使用Html助手生成单选按钮并且模型是数组的一部分时,会出现问题. 这是我的代码的缩减版本. public class CollectionOfStuff { public MVCModel[] Things { get; set }}/*This model
难以创建组合在一起的单选按钮列表,特别是在MVC 3中,但这也适用于MVC 2.
当使用Html助手生成单选按钮并且模型是数组的一部分时,会出现问题. 这是我的代码的缩减版本. public class CollectionOfStuff { public MVCModel[] Things { get; set } } /*This model is larger and represents a Person*/ public class MVCModel { [UIHint("Hidden")] public string Id { get; set; } public string Name { get; set; } public bool IsSelected { get; set; } } /*Assigned to new CollectionOfStuff property Things*/ var items = new[] { new MVCModel() { Id="0" Name = "Name here" },new MVCModel() { Id="1" Name = "Name there" } } 我的父母观点 @model CollectionOfStuff @for (int i = 0; i < Model.Things.Length; i++) { @Html.EditorFor(m => m.Things[i]); } 我的视图渲染单个MVCModel对象 @Model MVCModel @{ var attr = new { Checked = Model.IsSelected ? "checked=checked" : "" }; } @Html.RadioButtonFor(model => model,Model.Id,attr) 生成此输出: <input type="radio" value="0" name="MVCModel[0]" id="MVCModel_0_" data-val-required="You need to choose" data-val="true" /> <input type="radio" value="1" name="MVCModel[1]" id="MVCModel_1_" data-val-required="You need to choose" data-val="true" /> 单选按钮没有分组,但它具有写出元数据以进行验证的明显优势. 另一种方式是通过调用: @Html.RadioButton(name: "GroupName",value: Model.Id,isChecked: Model.IsSelected) 生产: <input type="radio" value="0" name="MVCModel[0].GroupName" id="MVCModel_0__GroupName"> <input type="radio" value="1" name="MVCModel[1].GroupName" id="MVCModel_1__GroupName"> 同样,这不会产生所需的结果.它也缺少验证元数据. 另一个选择是创建自定义模板,但此方法的问题是验证所需的所有元数据都不存在. 关于如何创建分组单选按钮或获取元数据的任何想法,以便我自己创建模板? 解决方法
您尚未显示视图模型的外观,但您可以按某些属性对它们进行分组.让我们举一个例子:
public class MyViewModel { [Required] public string SomeProperty { get; set; } } 控制器: public class HomeController : Controller { public ActionResult Index() { return View(new MyViewModel()); } [HttpPost] public ActionResult Index(MyViewModel model) { return View(model); } } 视图: @model AppName.Models.MyViewModel @using (Html.BeginForm()) { <div>A: @Html.RadioButtonFor(x => x.SomeProperty,"a")</div> <div>B: @Html.RadioButtonFor(x => x.SomeProperty,"b")</div> @Html.ValidationMessageFor(x => x.SomeProperty) <input type="submit" value="OK" /> } 现在,如果你想预先选择一些无线电,只需将视图模型的属性设置为无线电的相应值,而不是在视图中编写一些丑陋的C#代码: public ActionResult Index() { var model = new MyViewModel { SomeProperty = "a" // select the first radio }; return View(model); } 显然,这种技术适用于任何简单的属性类型(不仅仅是字符串)以及可以与此属性关联的任意数量的单选按钮. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 获取ASP.NET会话上次访问时间(或超时)
- asp.net-mvc – 当模型绑定包含bool时,表单集合必须包含哪个
- asp.net – 我很难很好地定位这个按钮
- asp.net-mvc – StructureMap / NHibernate Session Per Re
- asp.net-mvc – 使用MVC3剃刀的ASP.Net图表控件
- ASP.NET MVC 2应用程序中的区域可以映射到子域吗?
- asp.net-mvc – 如何使用Visual Studio 2013和Entity Frame
- asp.net-mvc-3 – 如何从控制器设置布局
- asp.net – NLog – 如何记录所有请求信息
- asp.net-mvc – 绑定到Viewmodel的文件上传
推荐文章
站长推荐
- IIS“SendResponse”状态下的请求已停留很长时间
- asp.net-mvc – ASP.NET MVC 3解决方案结构,数据
- asp.net-mvc-3 – MVC脚手架问题
- mvc-mini-profiler – MVC MiniProfiler与ASP.NE
- asp.net – SignalR和HttpContext / Session
- ELMAH在ASP.NET vNext?
- asp.net – Web.config文件中的appSettings和con
- ASP.NET 5:捕获和记录所有未处理的异常的建议方
- asp.net – 什么时候回输HTML输入标签?
- asp.net – 访问listview的edititemtemplate中的
热点阅读