C# MVC4验证不起作用
我有一个简单的1页应用程序发送电子邮件给用户。我有3个字段,分别是姓名、电子邮件和电话号码。代码似乎与输入按钮一起工作,启动验证并抛出正确的错误消息。但我更倾向于在UI中使用锚定标签(ActionLink)。当我单击锚定标记(使用jQuery)时,数据仍然会发布,但验证不会触发。我有没有遗漏什么或者有更好的方法 我已经用post作为参考 型号C# MVC4验证不起作用,c#,jquery,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Jquery,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我有一个简单的1页应用程序发送电子邮件给用户。我有3个字段,分别是姓名、电子邮件和电话号码。代码似乎与输入按钮一起工作,启动验证并抛出正确的错误消息。但我更倾向于在UI中使用锚定标签(ActionLink)。当我单击锚定标记(使用jQuery)时,数据仍然会发布,但验证不会触发。我有没有遗漏什么或者有更好的方法 我已经用post作为参考 型号 public class Contact { [Required(ErrorMessage = "Name is required")]
public class Contact
{
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
[Required(ErrorMessage = "Email is required")]
public string Email { get; set; }
[Required(ErrorMessage = "Phone is required")]
public string PhoneNumber { get; set; }
}
查看
<div>
@Html.TextBoxFor(model => model.Name, new { @class = "form-control", placeholder="Name" })
@Html.ValidationMessageFor(model=>model.Name)
</div>
<div>
@Html.TextBoxFor(model => model.Email, new { @class = "form-control", placeholder="Email" })
@Html.ValidationMessageFor(model=>model.Email)
</div>
<div>
@Html.TextBoxFor(model => model.PhoneNumber, new { @class = "form-control", placeholder="Phone" })
@Html.ValidationMessageFor(model=>model.PhoneNumber)
</div>
<div>
<input type="submit" value="Give me Free Advice" />
<div class="btn">
@Html.ActionLink("I want free advice", "designerhome")
</div>
</div>
<script>
$(function () {
$('.btn').click(function (e) {
$.post("/campaign/designerhome", { Name: $("#Name").val(), Email: $("#Email").val(), PhoneNumber: $("#Phone").val() }, function (result) {
//do whatever with the response
if (result.status == true) {
alert('Email submitted successfully');
}
});//end of post
});//end of click
});
</script>
只需将输入按钮的样式设置为具有以下CSS的链接:
input[type=submit]{
背景:无!重要;
边界:无;
填充:0!重要;
颜色:#069;
文字装饰:下划线;
光标:指针;
}
我会在您的点击处理程序中强制验证,因为jQuery似乎只对表单的自动提交(而不是您正在执行的手动post()
进行验证):
当您向操作发出Ajax请求时,您的验证不会被反映,因为视图不会再次呈现。要保持不变,可以返回类似JSON的
return Json(new {Valid = validState,
Errors = Get Errors FromModel State,
});
然后使用JavaScript重新填充
另一种方法是制作自定义帮助程序,它将对所需操作发出POST请求。相同的代码参考如下
最后,您可以创建一个HTML按钮并发出POST请求。我们有一些原因说明验证不起作用
1。检查web配置中的应用设置
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
希望它能帮助您。为避免请求被重定向以获取请求。在锚的onClick()方法中绑定e.preventDefault()。
return Json(new {Valid = validState,
Errors = Get Errors FromModel State,
});
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
jquery.unobtrusive*.js
jquery.validate*.js