1
我正在使用Angularjs与Asp.net MVC。由于我是Angularjs中的新成员,因此我正面临着与MVC一起使用它的一些问题。目前我想验证一个表单。我使用 -客户端验证与Angularjs和服务器端验证与Asp.net MVC
1.对于客户端:Angularjs
2.对于服务器端:
- Asp.net MVC使用数据标注默认验证TECHNIC。
- 将在表单提交后检查ModelState IsValid。
ModelState.IsValid工作,只有当每个HTML元素的名称标签是完全一样的我的模型的属性名称。
是否有任何其他方式进行服务器端验证,同时使用MVC与angularjs,因为当我们有一个大表格充满控件,然后我们必须照顾每个元素,以便名称标记保持与相应的属性名称相同我的模型。
我的HTML:
@model AngularMVC.Models.StudentModel
@{
ViewBag.Title = "student";
}
@using (Html.BeginForm("Submit", "Test", FormMethod.Post, new { name = "addstudent" }))
{
<div class="row">
<section>
<div class="form-group">
<div class="col-md-2">Name:</div>
<div class="col-md-10">
<div class="col-md-4">
<input class="form-control" name="Name" id="Name" type="text" placeholder="Enter Name" ng-model="Name" ng-required="true" />
</div>
<div class="col-md-4">
<span style="color:red" ng-show="addstudent.Name.$invalid">
<span ng-show="addstudent.Name.$dirty && addstudent.Name.$invalid">Name is required.</span>
</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-2">Mobile Number:</div>
<div class="col-md-10">
<div class="col-md-4">
<input class="form-control" type="text" placeholder="Enter Mobile Number" name="MobileNumber" ng-model="MobileNumber" ng-pattern="/^\d{0,9}(\.\d{1,9})?$/" />
</div>
<div class="col-md-4">
<span style="color:red" ng-show="addstudent.MobileNumber.$invalid">
<span ng-show="addstudent.MobileNumber.$dirty && addstudent.MobileNumber.$invalid">Mobile number is required.</span>
<span ng-show="addstudent.MobileNumber.$dirty && addstudent.MobileNumber.$error.pattern">Not a valid mobile number!</span>
</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-2">Email:</div>
<div class="col-md-10">
<div class="col-md-4">
<input class="form-control" type="email" name="EmailAddress" placeholder="Enter email" ng-model="email" />
</div>
<div class="col-md-4">
<span style="color:red" ng-show="addstudent.EmailAddress.$invalid">
<span ng-show="addstudent.EmailAddress.$dirty && addstudent.EmailAddress.$invalid">email is required.</span>
<span ng-show="addstudent.EmailAddress.$dirty && addstudent.EmailAddress.$error.pattern">Not a valid email address!</span>
</span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-2">Address:</div>
<div class="col-md-10">
<div class="col-md-4">
<input class="form-control" type="text" placeholder="Enter Addess" name="Address" ng-model="address" ng-required="true" />
</div>
<div class="col-md-4">
<span style="color:red" ng-show="addstudent.Address.$invalid">
<span ng-show="addstudent.Address.$dirty && addstudent.Address.$invalid">Address is required.</span>
</span>
</div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Add Student" class="btn btn-default" />
</div>
</div>
</div>
</section>
</div>
}
<script src="~/Scripts/ng-module.js"></script>
学生型号:
public class StudentModel
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[RegularExpression(@"/^\d{0,9}(\.\d{1,9})?$/")]
public long MobileNumber { get; set; }
[RegularExpression("^[a-zA-Z0-9_\\.-][email protected]([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$")]
public string EmailAddress { get; set; }
[Required]
public string Address { get; set; }
}
如果您使用的是AngularJs,最好在服务器端使用WebAPI并发送来自AngularJs的发布请求。我认为它提供了更多的可能性来使用$ http或$ resource来发出AJAX请求,而不是使用AngularJs和ASP.NET MVC的混合。 –
@CarlesCompany是一个很好的观点。保持你的服务器端验证,因为你需要一个gaurd抵御任何流程角度,但有你的用户友好的验证,包括消息等纯粹在用户界面使用角度。此外,切换到所有数据调用的Web API并仅使用MVC提供以html为中心的视图是一个好主意。 – Igor
我有我的服务器端验证,但我关心的是我在这里遵循的过程是唯一的过程?有没有更好的解决方案? – Anadi