ama*_*eur 2 asp.net asp.net-mvc models viewmodel asp.net-mvc-4
在一个mvc项目中,有人可以向我解释模型和视图模型之间的区别吗?
我的理解是视图模型重新呈现了视图数据,例如.cshml,但模型表示部分视图的数据.这是否正确.我已经看到在不同情况下使用的名称使我感到困惑,因此寻找方向.
模特是你的领域.例如,我们可能有一个客户模型.我们可以在我们的域中使用此客户.我们可以为这个客户下订单.我们可以更新客户的联系方式,等等.
// Domain object, encapsulates state.
class Customer
{
public void PlaceOrder() {...}
public void UpdateContactDetails() { ... }
}
Run Code Online (Sandbox Code Playgroud)
视图模型是一种以简单方式呈现数据的方式.例如,我们可能有一个客户视图模型.这将是一个简单的DTO(数据传输对象),它允许我们将客户公开给视图.通常,视图模型是从模型创建的 - 通常会进行某种形式的转换.
// DTO - exposes state - no domain logic
class CustomerViewModel
{
public string Name { get; set; }
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
使用视图模型而不是在视图中使用域对象的好处是,您不必公开域的内部以简化表示逻辑.我应该补充说,视图模型是一种控制模型绑定的方法,例如,如果您公开数据库记录,您可能不希望整个记录可绑定.使用视图模型意味着仅绑定模型上的那些参数.因此,从安全角度来看,使用视图模型非常重要.这里的替代方案是使用白名单来控制在模型绑定过程中使用的内容 - 这自然是繁琐且容易出错的.
就ASP.NET MVC而言 - 单词模型在某种程度上可以互换使用.在"真实世界"项目中,您的域可能很复杂,并且不会驻留在Web App中,您可能会包含其他一些依赖项.因此,您将使用的"模型"将是"视图模型".
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |