【问题标题】:Validation in Partial View not working in MVC 4部分视图中的验证在 MVC 4 中不起作用
【发布时间】:2014-09-22 11:25:46
【问题描述】:

我在部分视图中有一个@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.ClientValidationEnabledUnobtrusiveJavaScriptEnabledweb.config 中都设置为true

3.在BundleConfig.cs中添加了以下script标签

<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

【问题讨论】:

  • 发布 FirstName 属性
  • 您在页面上运行了哪些自定义 JavaScript(即由您或您的组织创建)?
  • 自定义Javascript?没什么...只是使用 jquery 验证。

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


【解决方案1】:

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

public class MainViewModel
{
    // properties

    public PartialViewModel PartialVm { get; set; }
}

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

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

【讨论】:

  • 两者使用相同的模型。
  • 然后只需执行@Html.Partial("PartialViewName", Model) 看看是否有帮助。
  • 你能告诉我这有什么帮助吗?逻辑上?
  • 您的部分渲染时没有要验证的模型。
  • 像这样...@Html.Partial("PartialViewName", Model) 模型将是对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
相关资源
最近更新 更多