部分视图中的验证不适用于MVC 4

时间:2014-07-30 17:30:55

标签: asp.net-mvc razor partial-views bootstrap-modal

我在部分视图中有一个@Html.ValidationMessageFor(model => model.FirstName)无法正常运行。加载的部分视图中包含的文本框包含"必需"它们上的数据注释和相关消息立即显示。我怎么能避免这个?它甚至没有验证。

部分查看代码

@{ Html.EnableClientValidation(); }
@*@{ ViewContext.FormContext = new FormContext(); }*@
@using (Html.BeginForm("ActionName", "ControllerName"))
{

<div>
    @Html.TextBoxFor(model => model.FirstName)
    @Html.ValidationMessageFor(model => model.FirstName)
</div>
....//some more HTML
}

主视图代码

<div class="modal" id="modalId" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">

            </div>
            <div class="modal-body" id="modalbodyId">
                @Html.Partial("PartilViewName")
            </div>
            <div class="modal-footer">

            </div>
        </div>
    </div>
</div>

到目前为止,我已尝试过以下内容 1.在部分视图中添加以下代码行

@{ ViewContext.FormContext = new FormContext(); }    

2. ClientValidationEnabled中的UnobtrusiveJavaScriptEnabledtrue都设置为web.config

3.在script

中添加了以下BundleConfig.cs代码
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
  

在我看到的所有帖子中,我需要使用类似下面代码的AJAX调用。   但是我不确定如何使用它。

 $("#create").click(function () {
            var form = $("#create_person").closest("form");
            form.removeData('validator');
            form.removeData('unobtrusiveValidation');
            $.validator.unobtrusive.parse(form);

            $.ajax({
                url: "/Person/CreateOrUpdate",
                type: "POST",
                data: $("#create_person").serialize(),
                cache: false
            });


        });

Code Courtsey

1 个答案:

答案 0 :(得分:0)

尝试将用于局部视图的模型添加为创建局部视图模型中的属性。

public class MainViewModel
{
    // properties

    public PartialViewModel PartialVm { get; set; }
}

然后在渲染局部时,将它传递给PartialViewModel属性。

@Html.Partial("PartialViewName", Model.PartialVm)