【问题标题】:Validation on partial view is not working对部分视图的验证不起作用
【发布时间】:2017-03-21 11:26:11
【问题描述】:

我正在使用 c# 创建简单的 mvc 应用程序。

当我使用局部视图获取输入时,不会触发验证。我已经使用数据注释完成了验证。另一件事我没有在局部视图中使用任何表单元素

请问有什么办法解决这个问题

【问题讨论】:

  • 你好@Sri,欢迎来到stackoverflow。请提供与您的问题相关的更多上下文,如有必要,请提供代码库。
  • 那是因为你的代码错了(你想让我们猜猜那是什么)

标签: asp.net-mvc validation


【解决方案1】:

所以,我假设您正在构建一个您想要提交的表单。

首先,您会建议您使用 EditorTemplates 而不是局部视图。但这只是一个提示。

这里是加载部分视图和重置验证的示例

$("#btnNewOrderLine").click(e => {
    e.preventDefault();
    (<any>$('#modalEditOrderLine')).modal('show');
    var orderId = $("#OrderID").val();
    $('#modalOrderLineBody').load("/ExactSalesOrders/PartialOrderLineDetail/", { orderLineId: "new", orderId: orderId },
        () => {
            $('#formOLDetail').removeData('validator');
            $('#formOLDetail').removeData('unobtrusiveValidation');
            $("#formOLDetail").each(function () { $.data($(this)[0], 'validator', false); }); //enable to display the error messages
            $.validator.unobtrusive.parse("#formOLDetail");
        }
    );

});

编辑:您不需要在部分视图页面的末尾添加任何脚本

【讨论】:

  • 您是否尝试在不使用@section 脚本的情况下添加它们。
  • 是的,我只添加了你指定的
  • 我的意思是没有@section Scripts{ }。所以,只需
  • 编辑了我的答案,为您提供了实际使用局部视图并重置局部视图验证的 TS 代码示例。这才是你真正需要的
  • 我正在使用 ajax post 方法调用部分视图,在我的部分视图中我没有任何表单元素
【解决方案2】:

查看您的 ViewModal 应该包含所有属性,包括您在部分视图中显示的属性。您应该在所需属性中包含 Data Annotation 属性。 例如:

public class myViewModal
{
 [Required]
 public int Id{get;set;}
 [Required]
 public string Name{get;set;}
 public string Desc{get;set;}

 //These two properties are for partial view
 [Required]
 public string DOB{get;set;}
 [Required]
 public string AnyOtherField{get;set;}
 }

你应该在你的主视图中引用这个模型

@model MyProject.Model.myViewModal

然后在主视图中的BeginForm或Form Tag中,你需要渲染局部视图才能进行验证。

@HTML.Beginform()
{
 // My main View HTML goes here
 // Here call the partial view
}

【讨论】:

  • 我正在使用 jquery 使用 ajax 调用局部视图
  • 没问题。你可以使用任何东西调用/加载部分,但它应该在主 @HTML.Beginform 内呈现以进行数据注释验证。否则,您需要使用 jquery 进行验证。
猜你喜欢
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 2012-12-17
相关资源
最近更新 更多