为剃刀局部定义ViewModel,如果只有一个则显示表单,如果有多个则显示表

本文关键字:如果 显示 表单 剃刀局 定义 ViewModel 有一个 | 更新日期: 2023-09-27 18:06:03

我需要创建一个局部视图与MVC,将显示项目列表,如果多于一个或html表单,如果只有一个。

我应该为这个部分创建一个ViewModel吗?

public Product Product { get; set; }
public IEnumerable<Product> Product { get; set; }

或者我发送列表会更好吗?如果我只是发送列表,我是否能够将第一个(也是唯一一个)项绑定到表单?

目标是将单个产品属性绑定到表单中,如果只有一个,如果有多个,则循环通过它们并输出到html表中。

为剃刀局部定义ViewModel,如果只有一个则显示表单,如果有多个则显示表

如果模型包含单个属性-称为Products,因为它是一个集合,对我来说似乎更简单。在视图中,测试其Count()并呈现表单或表。绑定不会有问题——如果Count() == 1,只拿First()项。

如果你有两个属性,如果它们都有数据你会怎么做?如果单值属性中的产品不同于集合中的第一个产品,该怎么办?哪一个赢了?

您可以通过在控制器或模型本身上实施业务规则来解决这些问题——但是如果您只有一个集合,则可以完全避免这些问题。