如何在 1 个页面中使用 2 个视图模型 - 一个用于显示信息,一个用于读取信息

问题描述 投票:0回答:1

我有一个页面,在其中向用户显示信息并从用户那里读取信息,我需要验证这些信息。问题是我每页只能使用一个视图模型。 我有这个视图模型用于显示信息:

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。

c# asp.net-core viewmodel
1个回答
0
投票

创建复合模型是个好主意,您仍然可以使用

ModelState.IsValid
检查模型状态。但在这种情况下,您可以使用
[ValidateNever]
属性标记忽略与 ProductDisplayModel 相关的部分数据,如下所示:

public class DataModel
{
    [ValidateNever]
    public ProductDisplayModel Display { get;set; }
    public CreateReviewModel ClientData { get; set; } 
}
© www.soinside.com 2019 - 2024. All rights reserved.