asp.net-mvc - 使用带有 AngularJS 的 jQuery 验证的 Razor View

标签 asp.net-mvc razor angularjs jquery-validate

我在我的 MVC 应用程序中使用 AngularJS 并尝试使用两全其美。我真的很喜欢在 MVC 中如何在 View 模型中设置验证逻辑,并通过 jQuery 验证在 Razor View 中轻松生成客户端验证。我使用 AngularJS 通过路由等来获取 SPA 行为,但是当我创建一个 Razor View 时,我用它来注入(inject)页面:
<div data-ng-view="data-ng-view"></div>
然后 jQuery 验证停止工作,即使脚本文件是注入(inject) View 的页面上的引用。请参阅下面的 Razor 观点:

@model BandViewModel
<div data-ng-controller="App.BandCreateCtrl">
    <form name="startBandForm">
        @Html.ValidationSummary(true)
        <br />
        @Html.LabelFor(m => m.Name)
        @Html.TextBoxFor(m => m.Name, new { data_ng_model = "band.Name" })
        @Html.ValidationMessageFor(m => m.Name)
        <br/>
        <input data-ng-disabled="startBandForm.$invalid" type="submit" data-ng-click="createBand(band)" value="Create"/>
    </form>
</div>

最佳答案

首先,IMO 使用 Razor 渲染您的模板充其量是充满危险的。通常,您希望为您的页面和指令模板使用静态 HTML,然后检索数据并将其作为 AJAX 发布到您的 API。实际上,ASP.NET Web API 非常擅长这一点。如果您的底层模型具有验证功能,那么糟糕的 Web API 调用将引发异常,您可以在 $http 或 $resource 处理程序中捕获并显示给用户。将标准 HTTP 表单帖子与 AngularJS 混合将是……困难的。

为了实现你想要的,我认为有人(不是我)必须编写相当于 jQuery Unobtrusive Validation library 的 AngularJS。 ,它本身正在使用 jQuery Validate plugin .不是微不足道的。我个人认为不会很快出现插入式 Angular 验证,特别是因为它更多地与标记有关,而与 JS 配置对象的关系较少。

当 View 完成加载时,您可以使用 the $viewContentLoaded event 重新初始化验证。 .但请不要。

关于asp.net-mvc - 使用带有 AngularJS 的 jQuery 验证的 Razor View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010229/

相关文章:

asp.net-mvc - TDD 工作单元模式 Moq 无法实例化类错误代理

c# - 授权属性意外工作

html - 'display: table-row-group' 的嵌套 div 布局不正确

HTML 将元素放在同一行

html - 使用 Razor 的带有子菜单的下拉菜单的简单示例

c# - MVC Razor : Helper result in html. 操作链接

css - css 文件的动态加载在 IE 中不起作用

angularjs - 单击时将 id 值传递给 ionic 模式

ajax - Angularjs + Flask-wtf : Bad request 400

c# - 如何使用c#检查当前URL是否有子域名?