Asp.net mvc Asp.NETMVC验证和;击倒foreach
我有一个MVC4验证和淘汰问题 我尝试了这个解决方案: 但是我遇到了与有效答案注释中列出的相同的问题=>验证只对第一个元素有效 经过几次搜索,我找到了关于模型绑定到列表的这篇文章: 我想知道如何合并这两种解决方案 仅对第一个元素进行验证的样本:Asp.net mvc Asp.NETMVC验证和;击倒foreach,asp.net-mvc,razor,knockout.js,Asp.net Mvc,Razor,Knockout.js,我有一个MVC4验证和淘汰问题 我尝试了这个解决方案: 但是我遇到了与有效答案注释中列出的相同的问题=>验证只对第一个元素有效 经过几次搜索,我找到了关于模型绑定到列表的这篇文章: 我想知道如何合并这两种解决方案 仅对第一个元素进行验证的样本: Dim dummy As ViewModels.ObjectViewModel = Model.MyObjects.FirstOrDefault @<tbody data-bind='foreach: MyObjects'> &l
Dim dummy As ViewModels.ObjectViewModel = Model.MyObjects.FirstOrDefault
@<tbody data-bind='foreach: MyObjects'>
<td>
@Html.TextBoxFor(Function(model) dummy.Label, New With {.data_bind = "value: Label"})
</td>
</tbody>
将虚拟对象作为ViewModels.ObjectViewModel=Model.MyObjects.FirstOrDefault进行尺寸调整
@
@Html.TextBoxFor(函数(模型)dummy.Label,使用{.data_bind=“value:Label”}新建)
示例验证工作正常,但如果没有敲除foreach,则无法动态添加项
<tbody>
@Code
Dim i As Integer = 0
For Each object In Model.MyObjects
@<tr>
<td>
@Html.TextBoxFor(Function(m) Model.MyObjects(i).Label)
</td>
</tr>
i+= 1
Next
End Code
</tbody>
@代码
尺寸i为整数=0
对于Model.MyObjects中的每个对象
@
@text.TextBoxFor(函数(m)模型.MyObjects(i).Label)
i+=1
下一个
结束代码
可能是有敲除变量:$index()?在过去,我曾试图强制将razor和敲除组合起来。但最近,我只是选择了这样或那样的方式。如果我要在客户端呈现一些东西,那么我将直接用HTML定义所有内容,而不是通过razor 在这里,您最好直接定义HTML元素。如果您需要现场验证,那么只需确保两件事:
因此,经过多次搜索和测试,我找到了解决方案: 1°步骤是为验证输入正确的名称 Razor视图代码: 这两个答案对我帮助很大:
没有必要合并这两种解决方案。KO是为你做的。事实上,如果我使用KO foreach,MVC验证只对第一项有效:/Hey Amhed,谢谢你的反馈。现在我还是想把剃刀和击倒结合起来。我刚刚找到了解决办法。如果有兴趣,请参阅我的答案。:)
Dim dummy As ViewModels.ObjectViewModel = Model.MyObjects.FirstOrDefault
<tbody data-bind='foreach: MyObjects'>
<td>
@Html.TextBoxFor(Function(model) dummy.Label, New With {.data_bind = "value: Label, attr: { name: 'MyObjects[' + $index() + '].Label'}"})
</td>
</tbody>
viewModel.addObject = function () {
viewModel.MyObjects.push(new object())
$("form").data("validator", null);
$.validator.unobtrusive.parse($("form"));
};