C# ajax调用asp.net MVC时模型的验证错误
我如何在ajax调用上显示验证错误,因为它没有在ajax调用上显示错误。我已经附上了我的代码,请检查并告诉我哪里错了。我没有使用强模型绑定。如果没有ajax调用,它将显示模型错误,但是我想用ajax调用显示模型错误 型号C# ajax调用asp.net MVC时模型的验证错误,c#,asp.net-mvc,asp.net-ajax,C#,Asp.net Mvc,Asp.net Ajax,我如何在ajax调用上显示验证错误,因为它没有在ajax调用上显示错误。我已经附上了我的代码,请检查并告诉我哪里错了。我没有使用强模型绑定。如果没有ajax调用,它将显示模型错误,但是我想用ajax调用显示模型错误 型号 public class Feedback { [Required(ErrorMessage = "Comment field is required")] [Display(Name = "Comment")] [MaxLength(1000, Err
public class Feedback
{
[Required(ErrorMessage = "Comment field is required")]
[Display(Name = "Comment")]
[MaxLength(1000, ErrorMessage = "Comment Cannot Be Longer Than 1000 Characters")]
public string CommentText { get; set; }
[Required(ErrorMessage = "Nme field is required")]
[MaxLength(100, ErrorMessage = "Name Cannot Be Longer Than 100 Characters")]
public string Name { get; set; }
[Required(ErrorMessage = "Email field is required")]
[MaxLength(150, ErrorMessage = "Email cannot be longer than 150 characters")]
[RegularExpression(@"^[a-zA-Z-._0-9]+@[a-zA-Z]+\.[A-Za-z]+$", ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
}
控制器
public ActionResult feedbackAndReview(Feedback feed)
{
if(ModelState.IsValid)
{
//add to database
}
return View();
}
查看
<div class="row">
<div class="col-md-6">
<textarea class="form-control" id="CommentText" style="margin-bottom:10px;max-width:100%; height:139px;" placeholder="Your thoughts"></textarea>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input type="text" class="form-control" placeholder="Your Name" id="Name" />
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="email" placeholder="Enter Valid Email Address" class="form-control" id="Email" />
</div>
</div>
<button type="button" onclick="submitReviewForm()" class="reviewBtn">POST REVIEW</button>
</div>
</div>
</div>
使用表单和绑定模型使其更容易
@model Feedback
<head
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
</head>
<form id="myform" method="post">
<div class="row">
<div class="col-md-6">
<textarea class="form-control" id="CommentText" style="margin-bottom:10px;max-width:100%; height:139px;" placeholder="Your thoughts"></textarea>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input type="text" class="form-control" placeholder="Your Name" id="Name" />
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="email" placeholder="Enter Valid Email Address" class="form-control" id="Email" />
</div>
</div>
<input type="submit" value="Submit" id="btnSubmit" class="reviewBtn">POST REVIEW</button>
</div>
</div>
</div>
</form>
$('#myform').on('submit', function (e) {
e.preventDefault();
var ok = $(this).valid();
if (ok) {
var comment = $("#CommentText").val();
var name = $("#Name").val();
var email = $("#Email").val();
$.ajax({
type: 'post',
url: '/Account/feedbackAndReview',
data: {'CommentText' : comment , 'Name' : name , 'Email' : email },
success : function (data)
{
}
})
}
}
@模型反馈
在你的ajax calli中添加一个错误处理程序我不知道你能帮我添加它吗?这是MVC的局限之一,也是为什么使用Angular这样的语言。在MVC中执行ajax调用时,您将失去模型功能,包括在模型反馈上使用数据注释@dcg评论是一条路,但是,如果您使用jQuery Untrusive,那么您必须在失败的回调方法中手动启动验证。@user10728126是的,我使用jQuery Untrusive,但它在ajax调用中没有显示错误,所以我如何手动启动验证?您是使用.cshtml查看还是仅使用标准html文件查看?如果您有一个.cshtml文件,jQuery unobtrusive将起作用,但您需要在视图中使用ValidationMessageFor。例如,如果将@Html.ValidationMessageFor(m=>m.CommentText)放在文本区域下方。要使其起作用,您还需要在CSHTML的顶部声明您的模型代码>正在阻止窗体重新加载吗?而submit.yw!它阻止了默认行为的发生。所以从技术上讲,是的,这是如何让ajax调用启动,而不是表单的完整回发。请记住,在回调成功函数中,您将失去模型绑定功能。因此,如果您想将任何内容绑定回表单中的这些输入,则必须使用html追加手动执行。
@model Feedback
<head
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
</head>
<form id="myform" method="post">
<div class="row">
<div class="col-md-6">
<textarea class="form-control" id="CommentText" style="margin-bottom:10px;max-width:100%; height:139px;" placeholder="Your thoughts"></textarea>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input type="text" class="form-control" placeholder="Your Name" id="Name" />
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="email" placeholder="Enter Valid Email Address" class="form-control" id="Email" />
</div>
</div>
<input type="submit" value="Submit" id="btnSubmit" class="reviewBtn">POST REVIEW</button>
</div>
</div>
</div>
</form>
$('#myform').on('submit', function (e) {
e.preventDefault();
var ok = $(this).valid();
if (ok) {
var comment = $("#CommentText").val();
var name = $("#Name").val();
var email = $("#Email").val();
$.ajax({
type: 'post',
url: '/Account/feedbackAndReview',
data: {'CommentText' : comment , 'Name' : name , 'Email' : email },
success : function (data)
{
}
})
}
}