asp.net-mvc – 使用HtmlHelper类时,MVC单选按钮列表未分组
发布时间:2020-05-23 20:30:28 所属栏目:asp.Net 来源:互联网
导读:难以创建组合在一起的单选按钮列表,特别是在MVC 3中,但这也适用于MVC 2. 当使用Html助手生成单选按钮并且模型是数组的一部分时,会出现问题. 这是我的代码的缩减版本. public class CollectionOfStuff { public MVCModel[] Things { get; set }}/*This model i
|
难以创建组合在一起的单选按钮列表,特别是在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-mvc – 如何将ms显示从LHS移动到RHS
- asp.net-mvc – 使用AJAX绑定时,在创建/更新后IEnumerable属
- asp.net-mvc – 一种在ASP.NET MVC中排除操作过滤器的方法?
- asp.net – Isapi过滤器无法在IIS 7上运行(在IIS 6上运行)
- asp.net-mvc – 如何在剃刀中获取页面原点?
- nuget-package – 如何创建和使用ASP.NET vNext类库NuGet包
- asp.net – 可以回收IIS应用程序池,而不会丢失用户会话?
- asp.net-mvc – ASP.NET MVC – 模型可以有业务逻辑吗?
- asp.net-mvc – 新ASP.NET MVC 6身份中AspNetUsers表中的Co
- asp.net – 在iframe中显示PDF
推荐文章
站长推荐
- asp.net * WebForms *开发人员将来可以期待什么?
- asp.net – 如何测试开发机器上的子域? abc.loc
- ASP.NET /数据库性能清单
- asp.net-core – 如何将ASP.NET 5从Beta6升级到B
- asp.net核心 – 如何排除在ASP.NET Core中发布文
- asp.net – 如何使用SqlDependency使OutputCache
- asp.net-mvc – Resharper 5:如何设置内联代码块
- asp.net-core – 在ASP.NET Core中使用Entity Fr
- asp.net mvc添加到AUTHORIZE属性
- ASP.NET会话意外结束
热点阅读
