是否应为DropDownList单独创建类?视图模型需为各视图设不同类吗?
关于DropDownList与ViewModel类设计的两个问题解答
是否应为下拉列表单独创建类?
这个得看你的下拉选项复用性和复杂度来决定:
- 如果这个下拉选项是跨多个视图复用的(比如系统全局的用户角色、订单状态列表),单独创建一个专门的下拉选项类(比如
DropdownOption或者SelectListItemExt)绝对是个好主意。这样你不用在每个ViewModel里重复定义相同的结构,后续要修改下拉选项的属性(比如加个是否禁用的标记IsDisabled),只需要改这一个类就行,维护成本低很多。 - 如果只是某个视图特有的简单下拉(比如就三四个固定选项,不会在其他地方用到),那直接在对应的ViewModel里定义
List<SelectListItem>就够了,没必要额外建类,徒增文件数量反而麻烦。
是否需要为每个视图在视图模型中设置不同的类?
答案是建议每个视图对应独立的ViewModel类,原因很直观:
- 每个视图的职责不一样,需求也不同。比如创建页面的ViewModel需要包含下拉列表、输入框的验证规则;而详情页面的ViewModel只需要展示数据,不需要下拉和验证。共用一个ViewModel会导致属性冗余,还可能把不需要的验证逻辑带到其他视图,容易出问题。
- 当然,如果有两个视图的需求高度重合(比如编辑页和创建页),可以用基类继承的方式:把共同的属性(比如下拉列表、基础输入字段)放到基类ViewModel里,然后编辑和创建的ViewModel分别继承基类,再添加各自特有的属性(比如编辑页需要
Id属性),这样既实现了复用,又保持了每个ViewModel的单一职责。
内容的提问来源于stack exchange,提问作者user9306199
相关产品推荐
相关产品推荐

