问题
I use AJAX to send forms to controller in ASP.NET Core but I have problem with send form with validation
<form asp-action="Create" asp-controller="Departments"
data-ajax="true"
data-ajax-method="Post"
data-ajax-mode="replace"
data-ajax-update="#content"
data-ajax-success="Success"
data-ajax-failure="Failure">
<div class="box-body">
<div class="alert alert-success" id="divalert" ></div>
<div class="form-group">
<label asp-for="Title" class="control-label"></label>
<input asp-for="Title" class="form-control" />
<span asp-validation-for="Title" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="ثبت" class="btn btn-success" />
</div>
</div>
</form>
This is Jquery code For Ajax
<script>
function Success() {
$("#divalert").text = "Yes";
}
function Failure() {
$("#divalert").text = "No";
}
</script>
but I want to show validation message ehen I send form with empty text Box ,
This is my Controller
public async Task<IActionResult> Create([Bind("Department_Id,Title,Task,Description,Department_Status")] Department department)
{
if (ModelState.IsValid)
{
_genericRepository.Add(department);
await _genericRepository.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(department);
}
How do I show validation message with Ajax when form is empty ?
回答1:
I use partial view "Create" and it works
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<div class="form-horizontal">
<form asp-action="Create" role="form" asp-controller="Department" asp-antiforgery="true"
data-ajax-success="Bindgrid"
data-ajax="true"
data-ajax-method="POST">
<div class="form-group">
<label class="control-label" asp-for="DepartmentName"></label>
<input class="form-control" type="text" asp-for="DepartmentName" />
<span asp-validation-for="DepartmentName" class="text-danger"></span>
</div>
<input class="btn btn-primary" type="submit" value="Save" />
</form>
</div>
all jquery file is needed for html or ajax validation.
回答2:
I use this way and it worked
Is it how I should code it?
I change controller from IActionResult to JsonResult .
public async Task<JsonResult>
Create([Bind("Department_Id,Title,Task,Description,Department_Status")]
Department department)
{
if (ModelState.IsValid)
{
_genericRepository.Add(department);
await _genericRepository.SaveChangesAsync();
return Json(department);
}
return Json(department);
}`
来源:https://stackoverflow.com/questions/51131913/validation-form-with-ajax-in-asp-net-core