Ali*_*tad 5 validation asp.net-mvc unobtrusive-javascript asp.net-mvc-3
在开始之前,我确实有一个非常特殊的问题,如果您想回答,请直接结束。但是,我很欢迎提出评论和建议,因此冗长的帖子。
好的,我们处理很多表格,其中一些表格很冗长,并且涉及很多领域。除顶层字段外,我们还要求能够具有可变数量的重复行(如我们所说)。例如,让我们考虑一个具有名称,姓氏和年龄的客户,而该客户可以有零个或多个地址(例如0到10),因此用户在填写表单时必须能够从表单中添加或删除联系人。因此,通常用户获取并通过“添加”按钮添加更多地址,并在每个地址旁边添加一个删除按钮。可能会有多个重复的部分以相同的形式出现,但我不会去那里。关键是,由于法律和历史原因,必须立即保存所有表格,以便可以编辑表格,
我将ASP NET MVC 2(具有单个通用控制器的强类型视图)与客户端验证和繁重的jquery脚本结合使用,以实现出色的功能。我们可能很快就要迁移到ASP NET MVC 3了,为了找到一个好的解决方案,我已经在和3一起玩了。这些地址在模型上定义为List<Address>,例如
我目前对此问题有一个可行的解决方案,但对此不满意:我有一个HTML帮助器,用于命名添加或删除按钮以及一些JavaScript以禁用验证并允许将表单回发(甚至无效),并且因为我可以找到被单击的按钮的名称,所以我拥有处理添加或删除的所有必要逻辑,并且工作得很好。
但是我发回了邮件,重新加载了表格,我正在寻找一种替代性的解决方案。这是我可以做的:
remove()元素。我只需要重命名已完成的索引。我们使用的是jquery日历,它破坏了我也已修复的新元素。但是验证无法正常工作,该验证可能可以与ASP NET MVC一起使用,但是此解决方案看起来像一个非常脆弱的解决方案-一屋一卡通,在添加另一张卡之前看起来不错。序列化表单,并使用Ajax将其发布到特定操作,并仅获取重复部分(作为局部视图)。可以重复使用控制器上的操作,并从视图本身调用该操作以返回部分视图
好的,最后一个是我正在处理的一个,但是有一个问题。只有在一段BeginForm()时间内将表单吞没后,带有非侵入式验证的ASP NET MVC 3才起作用,而我的顶层视图只有BeginForm()局部视图,而没有局部视图。当我从视图中调用它时效果很好,但在ajax调用中却无法获得重复部分。
那么有没有办法告诉ASP NET MVC 3吐出验证数据属性,而不管它们是否位于BeginForm()块中?老实说,如果这不是错误,那么这绝对是一项重要的功能要求。实际上,我已经使用反射器反汇编了代码,而且情况似乎就在那里。
简短回答:
将其添加到局部视图中:
if (ViewContext.FormContext == null)
{
ViewContext.FormContext = new FormContext();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2425 次 |
| 最近记录: |