我有一个包含以下内容的模型
public class Content
{
public string Name{get;set;}
public string Age{get;set;}
}
现在我有两个观点。
View 1: Supplier
Textbox for Supplier Name:
TextBox for Supplier Age:
View2: Receiver
TextBox for Receiver Name:
Textbox for Receiver Age:
以上两个部分视图都在单一形式的同一主视图中。当我提交表格时,我应该能够分别验证每个部分。例如供应商名称不能为空。接收者年龄不能为空白等。当发布到Action Method时,每个都应解析为Content model type。有可能吗?或者我应该创建两个具有相同类型成员的模型?
答案 0 :(得分:0)
虽然对象具有相同的属性,但上下文不同。我建议创建两个单独的模型。
例如:您可能希望添加仅适用于供应商但不适用于Receiver的属性。你不希望接收器也得到它,只是让它忽略它。
答案 1 :(得分:0)
MVC必需验证不支持属性的多错误消息
然而。因此,如果您想重新使用Content
类并为Name和Age获取不同的错误消息,除非您像这样http://www.codeproject.com/Articles/275056/Custom-Client-Side-Validation-in-ASP-NET-MVC进行自定义客户端验证,否则还没有办法。
在此方法中,您可以显示您喜欢的任何错误消息。但是,如果禁用js,您将从服务器获取原始错误消息。
就个人而言,我建议创建2个不同的模型,因为您不必为每种属性类型重写规则(例如:datetime,email,range等)。
public class SupplierModel
{
[Required(ErrorMessage = "Supplier Name cannot be blank")]
public string Name {get; set;}
[Required(ErrorMessage = "Supplier Age cannot be blank")]
public string Age {get; set;}
}
public class ReceiverModel
{
[Required(ErrorMessage = "Receiver Name cannot be blank")]
public string Name {get; set;}
[Required(ErrorMessage = "Receiver Age cannot be blank")]
public string Age {get; set;}
}
无论您采用哪种方式,控制器操作都将收集相应的属性。