首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有描述表单与模型分离的设计模式?

是否有描述表单与模型分离的设计模式?
EN

Software Engineering用户
提问于 2013-12-01 18:29:03
回答 2查看 289关注 0票数 1

我正在开发一个在C#中实现的web应用程序,它遵循MVC的约定。

这个应用程序包含一个页面,允许我创建或更新一个展板。视图将一个完整的展翅模型传递给控制器,让我创建或更新。

问题是,该页面还有一个复选框,允许我为所有用户创建相同的Wingdings。当前代码向缠绕模型添加了一个变量以捕获该数据,因此可以将其从视图中传回。

在我看来,页面应该有一个从视图传递回控制器的有翼页面表单对象,而不是向不会保存到DB的模型中添加额外的变量。

我知道这是关注点的分离,但是是否有更具体的设计模式来描述从模型中分离出来的?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2013-12-02 02:47:11

听起来你在找一个视图模型。

视图模型是一个对象,它只封装视图显示所需的数据。示例:

代码语言:javascript
复制
public class UserInformationViewModel
{
    public string DisplayName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string StateID { get; set; }
    public string Zip { get; set; }

    public SelectList States { get; set; }
}

在本例中,州是州或省的列表,用于填充下拉列表。数据来源于多个表,但包含在单个对象中。

在智能客户端场景中,视图模型还可以包含视图逻辑,例如基于用户选择的数据的验证和显示修改。

票数 2
EN

Software Engineering用户

发布于 2013-12-01 19:10:41

有多种解决方案:

1.)IMHO最干净的解决方案是将该复选框作为单独的字段并将其传递给控制器,这样它就知道该做什么了。

2.)您可以使用PresentationModel模式封装控制器需要知道并传递该对象的所有内容。

除此之外,我相信,您描述用例的方式,您的模型中有一个缺陷。如果您为多个用户创建相同的项,那么您的鉴别器就是对模型中的用户的引用,不是吗?因此,您需要传递控制器,您的卷绕蓝图和用户列表。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/219984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档