我正在使用 MVC4 和淘汰赛。我的页面上有一个强类型化到视图模型的表单。在该视图模型中,我定义了一些验证,例如:
[Required(ErrorMessage = "Title is required")]
public string Title { get; set; }
如果我在没有填写必填字段的情况下对表单进行标准发布,我的操作会发现模型无效并返回到视图,并且会显示一条主要验证消息,因为我有@Html.ValidationSummary
以我的形式。各个字段也被标记为无效(带有消息),因为我有@Html.ValidationMessageFor
与领域相关
所以然后我添加了淘汰赛,而不是仅仅发布我现在调用的表格ko.utils.postJson($("form")[0], self);
。现在几乎一切正常,如果我发布未填充必填字段的表单,我的操作会检测到模型无效并返回到视图,但现在不显示单独的验证消息。
帖子之前填写的字段也会丢失。我尝试通过读取 mvc 视图模型并将变量设置为这些值来解决这个问题,如下所示。
var model = @Html.Raw(Json.Encode(Model));
然后在我的淘汰赛视图模型中设置该值
self.Title = ko.observable(model.Title);
但是当我输入“1”时,当失败的帖子返回时,它会用“1”填充该字段。
这并不是太复杂的表单,因此如果可以避免的话,我不想引入一些新的验证层。我不介意有一个验证帖子。
谢谢,丹
我问什么。过去两周我一直在探索这个话题。 (如果你愿意的话,可以查看我最近几天的问题)。我得出的结论是,数据注释和流畅验证在使用淘汰赛的客户端上不起作用很遗憾。因此你have to引入另一层验证。
好消息是它经过了充分的测试,并且与淘汰赛一样标准。
您主要有三个选择:
- 淘汰赛验证 https://github.com/ericmbarnard/Knockout-Validation
- 敲敲 https://github.com/Enome/knockknock
- jQuery 验证 https://github.com/jzaefferer/jquery-validation
我原以为社区会倾向于建议使用 jQuery,但显然主流的淘汰赛验证是第一选择。它的行为与数据注释非常相似,但显然是在淘汰视图模型字段上完成的。
希望这有帮助(不要射击信使:))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)