Asp.net core 模式部分视图Asp.Net Core 3中没有验证
我使用模态并将部分视图加载到它,但如果我将字段保留为空,则在单击“提交”按钮后不会发生任何验证并关闭模态 我还在viewmodel中使用必需的注释。另外,当我单击submit时,它会在controller中调用action direct 我的问题:如何以模态形式显示验证消息Asp.net core 模式部分视图Asp.Net Core 3中没有验证,asp.net-core,Asp.net Core,我使用模态并将部分视图加载到它,但如果我将字段保留为空,则在单击“提交”按钮后不会发生任何验证并关闭模态 我还在viewmodel中使用必需的注释。另外,当我单击submit时,它会在controller中调用action direct 我的问题:如何以模态形式显示验证消息 @节脚本{ 函数onFailureDefault(数据){ $(“#AddOrderDetailModalDiv”).valid() } 函数OpenAddOrderDetailTempItemOnSuccess(){ $(
@节脚本{
函数onFailureDefault(数据){
$(“#AddOrderDetailModalDiv”).valid()
}
函数OpenAddOrderDetailTempItemOnSuccess(){
$(#AddOrderDetailModalDiv”).modal(“show”);
}
函数AddOrderDetailTempItemOnComplete(){
$(“#AddOrderDetailModalDiv”).modal(“隐藏”);
}
}
@model OrderDetailViewModel
@使用(Html.BeginForm(“AddOrderDetailTempItem”、“Orders”、FormMethod.Post、new
{
id=“AddForm”,
@数据\u ajax=“true”,
@data\u ajax\u method=“post”,
@数据_ajax_update=“#OrderDetailList”,
@数据\u ajax\u failure=“onFailureDefault”,
@数据\u ajax\u complete=“AddOrderDetailTempItemOnComplete”
}))
{
@(Model.ID>0?“编辑产品”:“添加产品”)
&时代;
@Html.HiddenFor(m=>m.ID)
@DropDownListFor(m=>m.ProductId,Model.ProductsList,“”,htmlAttributes:new{@class=“select2 form control”})
@DropDownListFor(m=>m.Unit,Model.QuantityUnitsList,”,htmlAttributes:new{@class=“form control”})
接近
}
你的代码不完整,所以我提供了一个工作演示,你可以检查它 型号:
public class Student
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
@model Student
<div id="MyModal" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header" >
<h4 class="modal-title" >Update Role</h4>
</div>
<div class="modal-body">
<form id="myform" method="post">
<div>
<label>Id</label>
<input asp-for="Id" />
<span asp-validation-for="Id" class="text-danger"></span>
</div>
<div>
<label>Name</label>
<input asp-for="Name" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<button id="button" class="btn btn-default">Save</button>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<button id="showmodal" class="btn btn-danger">
Click
</button>
<div id="partical">
<partial name="~/Views/Shared/_OrderDetailGridPartial.cshtml" />
</div>
@section scripts{
<script>
$("#showmodal").click(function () {
$('#MyModal').modal('show');
})
$("#button").click(function (e) {
e.preventDefault();
var model = $('#myform').serialize();
console.log(model);
$.ajax({
type: 'POST',
url: 'home/index',
async: false,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: model,
success: function (result) {
$('#partical').html(result);
$('#MyModal').modal('show');
}
});
})
</script>
}
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Index(Student student)
{
if (!ModelState.IsValid)
{
return PartialView("_OrderDetailGridPartial",student);
}
return View();
}
\u OrderDetailGridPartial:
public class Student
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
@model Student
<div id="MyModal" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header" >
<h4 class="modal-title" >Update Role</h4>
</div>
<div class="modal-body">
<form id="myform" method="post">
<div>
<label>Id</label>
<input asp-for="Id" />
<span asp-validation-for="Id" class="text-danger"></span>
</div>
<div>
<label>Name</label>
<input asp-for="Name" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<button id="button" class="btn btn-default">Save</button>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<button id="showmodal" class="btn btn-danger">
Click
</button>
<div id="partical">
<partial name="~/Views/Shared/_OrderDetailGridPartial.cshtml" />
</div>
@section scripts{
<script>
$("#showmodal").click(function () {
$('#MyModal').modal('show');
})
$("#button").click(function (e) {
e.preventDefault();
var model = $('#myform').serialize();
console.log(model);
$.ajax({
type: 'POST',
url: 'home/index',
async: false,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: model,
success: function (result) {
$('#partical').html(result);
$('#MyModal').modal('show');
}
});
})
</script>
}
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Index(Student student)
{
if (!ModelState.IsValid)
{
return PartialView("_OrderDetailGridPartial",student);
}
return View();
}
测试结果
您的型号在哪里?您在模型上使用过数据注释吗?是的,我在模型中使用了必需的数据注释,我还更新了问题以包括modelHi@yinqiuThanks,但当我在父窗体中单击submit inside时,我在父窗体的模式窗体中(我更新了我的问题)其调用操作方法。