首页 > 解决方案 > 如何在引导模式中触发 ASP.Net 核心模型验证和远程属性

问题描述

我想知道如何在提交之前在引导模式弹出中触发模型验证?我想从我的模式弹出窗口中触发所需的远程属性验证

这是我的模型代码:

    public class Employee
    {
        public int Id { get; set; }

[Required]
        [Remote("CheckFirstName", "Employees", ErrorMessage = "FirstName already exists.")]
        public string FirstName { get; set; }

        //code here
    }

我的控制器代码:

    public IActionResult Create()
        {
            Employee emp = new Employee();
            return PartialView("_EmployeePartial", emp);
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("Id,FirstName,LastName,MI")] Employee employee)
        {
            //code here
            return View(employee);
        }

[AcceptVerbs("Post", "Get")]
public IActionResult CheckFirstName(string fname){
//code here
}

我的员工部分代码:

@model CrudApp.Models.Employee
<!-- Modal -->
<div class="modal fade" id="addEmployee" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-body">
                <form asp-action="Create">
                    //code here
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-primary" data-save="modal">Save changes</button>
            </div>
        </div>
    </div>
</div>

调用模态的代码:

<button type="button" class="btn btn-primary" data-toggle="ajax-modal" data-target="#addEmployee"
        data-url="@Url.Action("Create")">Create</button>

JS代码:

    var PlaceHolderElement = $('#PlaceHolderHere');
    $('button[data-toggle="ajax-modal"]').click(function (event) {

        var url = $(this).data('url');
        $.get(url).done(function (data) {
            PlaceHolderElement.html(data);
            PlaceHolderElement.find('.modal').modal('show');
        });
    });

    PlaceHolderElement.on('click', '[data-save="modal"]', function (event) {

        var form = $(this).parents('.modal').find('form');
        var actionUrl = form.attr('action');
        var sendData = form.serialize();
        $.post(actionUrl, sendData).done(function (data) {
            PlaceHolderElement.find('.modal').modal('hide');
        });
    });

标签: c#asp.net-mvcvalidationasp.net-corebootstrap-modal

解决方案


您正在触发控制器中不存在的CheckFirstName操作。

public IActionResult CheckFirstName(string FirstName)
{
   // code to validate the FirstName
   
   return Json(result); //return result in json example your validation message.
}

这将在您在 FirstName 文本框中输入输入时触发。


推荐阅读