asp.net-mvc-3 – LabelFor不在循环中工作(for / foreach / temp
发布时间:2020-12-16 07:28:01 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试列出复选框,但 Html.LabelFor无效. 它不断生成 label for =“”某些文字 / label,请注意空的For属性. 在尝试使用显示模板之前,我尝试过for和foreach循环,但它们都有这个问题. 我拒绝相信手动编写输入字段是唯一的解决方案. 所有的帮助/提示非常感
我正在尝试列出复选框,但
Html.LabelFor无效.
它不断生成< label for =“”>某些文字< / label>,请注意空的For属性. 在尝试使用显示模板之前,我尝试过for和foreach循环,但它们都有这个问题. 该模型: public class MyViewModel { public string Name { get; set; } public bool Selected { get; set; } } 控制者: public ActionResult MyController() { var model = new List<MyViewModel>(); model.Add(new MyViewModel() { Name= "Foo" }); model.Add(new MyViewModel() { Name= "Bar" }); return View(model); } 风景: @model IEnumerable<MyViewModel> <div> @Html.DisplayFor(x => Model) </div> 显示模板: @model MyViewModel <p> @Html.LabelFor(model => model.Selected,Model.Name) @Html.EditorFor(model => model.Selected) </p> 结果: <div> <p> <label for="">Foo</label> <input class="check-box" data-val="true" data-val-required="The Foo field is required." name="[0].Selected" type="checkbox" value="true" /> <input name="[0].Selected" type="hidden" value="false" /> </p> <p> <label for="">Bar</label> <input class="check-box" data-val="true" data-val-required="The Bar field is required." name="[1].Selected" type="checkbox" value="true" /> <input name="[1].Selected" type="hidden" value="false" /> </p> <div> 正如您所见,< label>没有按预期工作. 解决方法
问题是因为在你的主视图中你直接拥有IEnumerable< MyViewModel>,前缀是[0].选择了帮助者不喜欢的.您还会注意到您的复选框没有ID.这是一个你可以用来改变这个前缀的黑客:
@model MyViewModel @{ ViewData.TemplateInfo.HtmlFieldPrefix = "Model" + ViewData.TemplateInfo.HtmlFieldPrefix; } <p> @Html.LabelFor(model => model.Selected,Model.Name) @Html.EditorFor(model => model.Selected) </p> 显然,这假设你的POST动作参数被称为模型: [HttpPost] public ActionResult Index(IEnumerable<MyViewModel> model) { ... } 情况可能并非总是如此. 另请注意,您可以使用@ Html.EditorForModel()代替主视图中的@ Html.DisplayFor(x => Model). 另一种可能性是将它包装在具有集合属性的视图模型中: 公共类MyViewModel 其中ItemViewModel: public class ItemViewModel { public string Name { get; set; } public bool Selected { get; set; } } 然后你的控制器: public ActionResult Index() { var model = new MyViewModel { Items = new[] { new ItemViewModel() { Name= "Foo" },new ItemViewModel() { Name= "Bar" } } }; return View(model); } [HttpPost] public ActionResult Index(MyViewModel model) { ... } 并在视图中: @model MyViewModel <div> @using (Html.BeginForm()) { @Html.DisplayFor(x => x.Items) <button type="submit">OK</button> } </div> 并在编辑器模板中(?/ Views / Shared / EditorTemplates / ItemViewModel.cshtml): @model ItemViewModel <p> @Html.LabelFor(model => model.Selected,Model.Name) @Html.EditorFor(model => model.Selected) </p> 现在它将按预期工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 传递IEnumerable变量以在ASP.NET MVC中查看
- asp.net-mvc – 多个模型和Breeze上下文的元数据问题
- asp.net-mvc – UIHint属性在MVC中
- asp.net – 401客户端’协商’,服务器’协商,NTLM’调用WCF
- 如何从ASP.NET Web API方法中查找声明的内容?
- asp.net-mvc-3 – 使用和不使用查询字符串路由旧请求
- asp.net-mvc – Ninject.Web.Common抛出ActivationExceptio
- asp.net – SQL Server查询从ADO.NET运行速度比SSMS慢
- Pro ASP.NET Core MVC(二)【第一个MVC 应用程序】
- asp.net – 如何拒绝访问文件夹或文件
推荐文章
站长推荐
- asp.net-mvc – 我的viewmodel值类型属性应该可以
- asp.net-mvc – 实体框架TPC继承(请现在拍我)
- asp.net-mvc-3 – mvc3 jquery unobtrusive验证语
- asp.net – ASP .NET MVC 3.会话过期太快了
- asp.net-mvc – ASP.Net MVC自定义模型绑定说明
- asp.net-web-api – Web API中的Actions和QueryS
- asp.net-mvc – Asp.net Identity使用什么算法来
- asp.net-mvc – ASP.NET MVC中依赖于语言的路由
- asp.net-mvc – ASP.MVC 2.0当整数值为零时,如何
- asp.net-mvc – 从Session_Start调用异步方法
热点阅读