部分视图的验证无效

时间:2017-03-21 11:26:12

标签: asp.net-mvc validation

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

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

请给出建议的解决方案是什么

2 个答案:

答案 0 :(得分:0)

所以,我假设你要建立一个你想提交的表格。

首先,您建议您使用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");
        }
    );

});

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

答案 1 :(得分:0)

请参阅ViewModal应包含所有属性,包括您在部分视图中显示的属性。您应该将数据注释属性包含在所需的属性中。 例如:

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

然后在主视图中 Inside BeginForm或Form Tag ,您需要渲染部分视图以进行工作验证。

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