ajax - 在从 java 脚本进行 Ajax 调用之前在 Asp.Net Core 中进行模型验证
问题描述
下面是示例代码,我在按钮单击事件中调用此代码。我的问题是,我可以在进行 ajax 调用之前验证我的 viewmodel 对象吗?我可以在 java 脚本中看到模型错误,不知道如何检查。我的视图模型类属性具有数据注释验证器属性。如果视图模型无效,我不想进行 ajax 调用,想在 java 脚本代码中检查 (ModelState.IsValid),然后再进行 ajax 调用。任何帮助将不胜感激。
$(function () {
$("#btnGet").click(function () {
var viewModelobject = {};
viewModelobject.Name = $("#txtName").val();
$.ajax({
type: "POST",
url: "/Home/AjaxMethod",
data: viewModelobject,
contentType: "application/json",
dataType: "json",
success: function (response) {
alert("Hello")
}
});
});
}
解决方案
ModelState.IsValid
是服务器端代码。浏览器不知道它是什么,因此您无法ModelState
在客户端进行验证。您可以Jquery Validation
在客户端使用。
这是一个工作演示:
1.型号:
public class UserModel
{
[Required(ErrorMessage = "The Name field is required.")]
[Display(Name = "Name")]
public string Name { get; set; }
}
2.查看(索引.cshtml):
@model UserModel
<form id="frmContact">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" id="txtName" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-secondary" id="btnGet">Click</button>
</div>
</form>
@section Scripts
{
@*you could also add this partial view*@
@*@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}*@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.1/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script>
<script>
$(function () {
$('#btnGet').click(function () {
if ($("#frmContact").valid()) {
$('#frmContact').submit();
}
else {
return false;
}
});
$("#frmContact").on("submit", function (event) {
event.preventDefault();
var viewModelobject = {};
viewModelobject.Name = $("#txtName").val();
$.ajax({
type: "POST",
url: "/Home/AjaxMethod",
data: JSON.stringify(viewModelobject),
contentType: "application/json",
dataType: "json",
success: function (response) {
alert("Hello")
}
});
});
})
</script>
}
3.控制器:
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult AjaxMethod([FromBody]UserModel user)
{
//do your stuff...
return Json(user);
}
}
推荐阅读
- python - TypeError:“CRS”类型的参数不可迭代
- kubernetes - 如何在集群中执行 kubectl 命令
- amazon-web-services - AWS Beanstalk 中的应用程序在开始后 40 分钟内处于 INFO 状态
- python - 幂律分布和 Barabasi-Albert 模型的指数;指数值
- javascript - 调用 alert(array.length) 时 JavaScript 未定义
- visual-studio - 将 ASP.NET CORE Identity 添加到现有的多项目解决方案
- java - 从java中提取子字符串
- javascript - 反应材料表:数据树中的颜色行
- php - PHP将相似名称变量转换为json
- python - 如何在python3中创建一个可以将整个列表放入列中的表