Validation Form With Ajax in Asp.net Core

守給你的承諾、 提交于 2021-02-18 13:04:05

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!