我有一个页面,在其中向用户显示信息并从用户那里读取信息,我需要验证这些信息。问题是我每页只能使用一个视图模型。 我有这个视图模型用于显示信息:
public class ProductDisplayModel
{
public ProductDisplayModel(List<Review> reviews, Product product)
{
Reviews = reviews;
Product = product;
}
public List<Review> Reviews { get; set; }
public Product Product { get; set; }
}
我有这个视图模型用于读取和验证用户的输入:
public class CreateReviewModel
{
public CreateReviewModel() { }
[MaxLength(100)]
[Required]
public string Comment { get; set; }
public int Rating { get; set; }
}
您可能建议我将 2 个视图模型合并为一个。那么问题是我不能使用
ModelState.IsValid
,因为当它到达 http post 方法时,显示信息的部分将始终为 null,因此 ModelState.IsValid
将始终为 false。
创建复合模型是个好主意,您仍然可以使用
ModelState.IsValid
检查模型状态。但在这种情况下,您可以使用 [ValidateNever]属性标记忽略与
ProductDisplayModel
相关的部分数据,如下所示:
public class DataModel
{
[ValidateNever]
public ProductDisplayModel Display { get;set; }
public CreateReviewModel ClientData { get; set; }
}