我正在开发一个在C#中实现的web应用程序,它遵循MVC的约定。
这个应用程序包含一个页面,允许我创建或更新一个展板。视图将一个完整的展翅模型传递给控制器,让我创建或更新。
问题是,该页面还有一个复选框,允许我为所有用户创建相同的Wingdings。当前代码向缠绕模型添加了一个变量以捕获该数据,因此可以将其从视图中传回。
在我看来,页面应该有一个从视图传递回控制器的有翼页面表单对象,而不是向不会保存到DB的模型中添加额外的变量。
我知道这是关注点的分离,但是是否有更具体的设计模式来描述从模型中分离出来的?
发布于 2013-12-02 02:47:11
听起来你在找一个视图模型。
视图模型是一个对象,它只封装视图显示所需的数据。示例:
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; }
}在本例中,州是州或省的列表,用于填充下拉列表。数据来源于多个表,但包含在单个对象中。
在智能客户端场景中,视图模型还可以包含视图逻辑,例如基于用户选择的数据的验证和显示修改。
发布于 2013-12-01 19:10:41
有多种解决方案:
1.)IMHO最干净的解决方案是将该复选框作为单独的字段并将其传递给控制器,这样它就知道该做什么了。
2.)您可以使用PresentationModel模式封装控制器需要知道并传递该对象的所有内容。
除此之外,我相信,您描述用例的方式,您的模型中有一个缺陷。如果您为多个用户创建相同的项,那么您的鉴别器就是对模型中的用户的引用,不是吗?因此,您需要传递控制器,您的卷绕蓝图和用户列表。
https://softwareengineering.stackexchange.com/questions/219984
复制相似问题