MVC Ajax BeginForm验证

时间:2016-02-29 13:43:38

标签: asp.net-mvc validation model-view-controller asp.net-ajax unobtrusive-validation

我有一个Bootstrap模式,可以插入。我正在使用Ajax BeginForm,我的验证有问题。正常验证如:必填字段效果很好。我的问题是我有一个服务器验证,当它进入控制器并且没有通过我的自定义验证我试图返回部分视图与模型甚至json,但我无法触发模态验证。我google了很多,我无法解决我的问题。

这是代码

public class ContactDto
{
    public decimal IdContact{ get; set; }
    public decimal? CounterpartyId { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public string City { get; set; }   
}

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult EditContact(ContactDto contact)
{
    if (CustomValidation(code) && ModelState.IsValid)
    {
        _dbManager.CreateCode(code);

        //return RedirectToAction("Details", "Counterparties", new { id = code.CodeCounterpartyId });
        return Json(new { Data = "Ok" }, JsonRequestBehavior.AllowGet);
    }

    return Json(new { Data = "Nok" }, JsonRequestBehavior.AllowGet);
}

使用Ajax的模式:

@using System.Globalization
@model UpdateTabs.Models.ContactDto

<div id="EditContactModalDiv" class="modal fade" role="dialog">
    <div class="modal-dialog modal-lg">

    .......

        @using (Ajax.BeginForm("EditContact", "Home", new AjaxOptions { HttpMethod = "POST", OnSuccess = "ValidateKeys"}, new { id = "formCreateContact" }))
        {
            @Html.AntiForgeryToken()
            @Html.ValidationSummary(false, "", new { @class = "text-danger" })

            ......

            @Html.TextBoxFor(m => m.Name)
            <br/>
            @Html.ValidationMessageFor(m => m.Name)

            ......      
        }   

    .......

    </div>
</div>      

和Jquery部分:

function ValidateKeys(result) {
    if (result.Ok) {
        $('#CreateCodeModalDiv').modal('hide');
    } else {

        alert("Model is invalid !");
        $('#CreateCodeModalDiv').modal('show');
    }
}

直到这里工作,但在此之后我不知道如何触发验证消息。

请帮忙吗? 感谢

0 个答案:

没有答案