我正在使用c#创建简单的mvc应用程序。
当我使用部分视图来获取输入时,不会触发验证。我已经使用数据注释完成了验证。另一件事是我在部分视图中没有使用任何表单元素
请给出建议的解决方案是什么
答案 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
}