繁体   English   中英

当部分视图在另一个视图中时,Mvc 模型验证错误不显示

[英]Mvc Model Validation Errors Not Showing when partial view Inside The another view

当我尝试直接在浏览器中加载局部视图并提交它时显示错误消息,但如果同一个局部视图在另一个视图中,则不会显示该模型错误验证。 在我使用 Ajax.Beginform 方法的视图中加载局部视图。

在浏览器中加载局部视图时在此处输入图片说明

当包含在另一个视图中时在此处输入图片说明

我的部分观点

@model FPW.FPWClientModels.SiteClientModel
@if (this.ViewContext.FormContext == null)
{
    this.ViewContext.FormContext = new FormContext();
}

    @using (Ajax.BeginForm("CreateSite", "Site", null, new AjaxOptions
    {
        HttpMethod = "POST",
        AllowCache = false,
        ////LoadingElementId = "AjaxOverlay",
        //OnSuccess = "SiteOnSaveSuccess",
        //OnFailure = "SiteOnSaveFailure",
    }, new { @id = "SiteCreateForm" }))
    {
        <div class="modal-body">
            @Html.AntiForgeryToken()            

            <div class="form-group">
                @Html.LabelFor(model => model.SiteName, htmlAttributes: new { @class = "control-label" })
                <div class="col-md-12">
                    @Html.EditorFor(model => model.SiteName, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.SiteName, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.SiteAddress, htmlAttributes: new { @class = "control-label" })
                <div class="col-md-12">
                    @Html.EditorFor(model => model.SiteAddress, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.SiteAddress, "", new { @class = "text-danger" })
                </div>
            </div>


        <div class="modal-footer">
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
            </div>
        </div>

    }

    <script>
        function SiteOnSaveSuccess(resp) {            
        }

        function SiteOnSaveFailure(resp) {            
        }
    </script>

我的控制器

public ActionResult CreateSite()
    {
        SiteClientModel oSiteClientModel = new SiteClientModel();
        return PartialView(oSiteClientModel);
    }

    //Create Site
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult CreateSite(SiteClientModel oSiteClientModel)
    {
        if (ModelState.IsValid)
        {
            var saveSiteDetails = oSiteApiController.CreateSiteDetails(oSiteClientModel);
            return PartialView(saveSiteDetails);
        }
        else
        {
            oSiteClientModel.ReturnValue = new ReturnValue { IsSuccess = false, ReturnType = ReturnType.Error, Message = "Form Not Valid" };
        }
        return PartialView("CreateSite",oSiteClientModel);
    }

发现错误。 它没有在 ajax 选项中使用更新目标 ID。 使用 UpdateTargetId 并将其指向表单 ID 后,它按预期工作正常

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM