asp.net-mvc – 复杂视图模型中的多个表单 – 如何只绑定其中一
发布时间:2020-12-16 09:59:39 所属栏目:asp.Net 来源:网络整理
导读:我有一个复杂的视图模型,其中包含使用编辑器和显示模板递归渲染的其他对象的集合. 集合中的每个项目都包含一个表单模型,我想将其提交给控制器.请注意,我不想再发布整个视图模型,只是表单模型. 我的问题是MVC将每个对象呈现为集合的一部分,我不知道如何将集合
我有一个复杂的视图模型,其中包含使用编辑器和显示模板递归渲染的其他对象的集合.
集合中的每个项目都包含一个表单模型,我想将其提交给控制器.请注意,我不想再发布整个视图模型,只是表单模型. 我的问题是MVC将每个对象呈现为集合的一部分,我不知道如何将集合中的单个对象绑定到控制器签名中的对象. 我知道我可以使用IEnumerable< Account>再次绑定整个批次,但我试图创建行级别提交而不是整个页面. 如果有人能指出我正确的方向,或者告诉我应该如何在MVC世界中做到这一点(我来自网络表格,所以有点被宠坏了)我会非常感激. 我在下面包含了一个示例HTML片段,还有我要发布的控制器. <form action="/Home/Index" method="post"> <input id="Accounts_0__AccountName" name="Accounts[0].AccountName" type="text" value="Account 1" /> <input id="Accounts_0__AccountId" name="Accounts[0].AccountId" type="hidden" value="dddf5ca7-f8de-4192-b63a-3548f891e293" /> <input type="submit" value="Submit" /> </form> <form action="/Home/Index" method="post"> <input name="Accounts[1].AccountName" type="text" value="Account 2" /> <input id="Accounts_1__AccountId" name="Accounts[1].AccountId" type="hidden" value="95d75f76-16ef-4cf2-b1e7-5fad782002c5" /> <input type="submit" value="Submit" /> </form> [HttpPost] public ActionResult Index(Account accounts) { ... } 解决方法
您可以尝试在编辑器模板中设置前缀:
@model AppName.Models.Account @{ ViewData.TemplateInfo.HtmlFieldPrefix = string.Empty; } @using (Html.BeginForm("Index","Home")) { @Html.TextBoxFor(x => x.AccountName) @Html.HiddenFor(x => x.AccountId) <input type="submit" value="Submit" /> } 如果我没有弄错,应该产生: <form action="/Home/Index" method="post"> <input id="AccountName" name="AccountName" type="text" value="Account 1" /> <input id="AccountId" name="AccountId" type="hidden" value="dddf5ca7-f8de-4192-b63a-3548f891e293" /> <input type="submit" value="Submit" /> </form> 显然你意识到通过这样做你最终会得到无效的HTML(你将拥有多个具有相同id的元素).可能的解决方法是手动设置id: @Html.TextBoxFor(x => x.AccountName,new { id = "some unique value like a GUID" }) @Html.HiddenFor(x => x.AccountId,new { id = "some unique value like a GUID" }) 另一种可能性是为Account类型编写一个自定义模型绑定器,它只是在绑定时忽略前缀. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 使用SVN和TeamCity的Web应用程序部署工作流程
- asp.net-mvc – MVC [HttpGet]控制器注释可选吗?
- asp.net-mvc – 如何从用户友好的URL中删除不必要的信息,然
- ASP.NET - 将 ASP.NET 用作高性能文件下载器
- asp.net-mvc – Asp.net内核MVC post参数始终为null
- asp.net-mvc – 调试流畅的验证规则
- .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源
- asp.net-mvc – 我应该在ASP.NET MVC3中附加自定义用户上下
- asp.net-mvc – 如何删除SimpleMembership用户?
- asp.net-mvc – 依赖注入框架的重点是什么?
推荐文章
站长推荐
- asp.net-mvc-4 – 将ninject dependecyResolver用
- ASP.NET C#5异步Web应用程序使用异步和等待
- asp.net-mvc – asp.net mvc wiki
- .net – 为什么UseAuthentication必须在.NET Cor
- asp.net-core – 基本bproject create无法创建优
- asp.net – 访问.NET中的Web服务中的查询字符串(
- asp.net – Excel VBA查询外部.aspx页面并检索数
- asp.net服务器控件中的默认值
- 自签名ASP.NET Web API 2 REST服务的令牌身份验证
- ASP.NET:编译器失败,错误代码为-532462766
热点阅读