【发布时间】:2013-09-09 22:16:35
【问题描述】:
我正在尝试连接一个适配器以使 ASP.Net MVC 为客户端验证发出的标记能够在 AngularJS 中工作,但我遇到了一个有趣的障碍。如果我通过指令编译函数动态添加required 属性:
var myApp = angular.module('myApp', []).directive('valRequired', function() {
return {
compile: function (element) {
element.attr('required', 'required');
return function() { /* other custom logic here */ }
}
};
});
select 元素不会按要求进行验证。只有在动态添加属性(jsFiddle)时才会出现问题。
澄清:我想按原样使用 MVC 的 @Html.TextBoxFor(...)。对于基于 DataAnnotations 的模型,它发出的 data-val-* 属性包含有关要运行哪些验证以及错误消息应该是什么的信息。我不是在寻找连接错误消息的帮助,我只需要能够连接一个指令,告诉input、select 等使用required 验证。
【问题讨论】:
-
like ng-required="{expression to test}" ?
-
并非如此。 ASP.Net MVC 使用
@Html.TextBoxFor(...)之类的东西发出data-val-required属性。我想自动将它们转换为它们的 angularjs 等价物,并添加一些接线以将 MVC 发出的验证消息也插入到应用程序中。 -
也许这会有所帮助:stackoverflow.com/questions/4844001/… 另外,
ng-require可以写成data-ng-require,仍然会被 angular 解析。 -
如果你想获得 MVC 发射属性的等效角度(如
data-val-required),你可以创建自己的@Html扩展方法,如@Html.AngularTextBoxFor(...)并保存客户端性能惩罚。我已经在我的应用程序中做到了这一点。如果你有兴趣,我可以在某个时候进一步写出来。 -
@jandersen 我知道你来自哪里。但是,我宁愿不重新发明轮子。 MVC 已经非常出色地使用所有必要的信息来标记 DOM,以进行基于 DataAnnotations 的验证。我只是想用 angularJS 而不是 jQuery 验证来连接这些位。制作自定义
HtmlHelper扩展方法仍然不能解决整个问题:我还需要连接验证消息,以便@Html.ValidationMessageFor(...)也能正常工作。
标签: asp.net-mvc angularjs data-annotations