【问题标题】:Template site for MVC3; is this the proper way to display the model?MVC3 的模板站点;这是显示模型的正确方法吗?
【发布时间】:2011-10-07 15:03:52
【问题描述】:

我对 Microsoft 在其模板站点中显示登录页面的方式感到困惑。 “用户名”、“密码”和“还记得我吗?”的具体措辞在模型本身中设置。这对我来说似乎完全倒退了。我认为 MVC 模式的全部意义在于帮助分离关注点。视图上显示的文本不会像那样绑定到模型。我认为您只想在视图中以纯文本形式显示“用户名”,这样就可以轻松地将其更改为“用户 ID”或翻译成另一种语言,而无需更改模型。

当创建一个与登录页面类似的新页面时,我应该遵循他们的模板吗?在模型本身中定义显示文本有什么好处吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 design-patterns separation-of-concerns


    【解决方案1】:

    实际上,您应该传递给视图的不是模型。它是一个视图模型。视图模型是专门为满足给定视图的要求而定制的类。因此,在这个视图模型中,您可以使用 [Display] 属性来装饰您的属性,以更改相应标签的文本,或者在使用 Html.LabelFor 帮助器作为第二个参数时将其设置在视图中。

    【讨论】:

    • 有趣... AccountModels.cs 中的类在某处被定义为“视图模型”吗?我以前不知道这个概念。我不明白为什么这比只在视图中定义模型的文本更可取。
    • @GendoIkari 它更可取,因为如果您在视图中的多个位置都有该标签,则在 ViewModel 中更改它比在视图中的每个位置更容易。这种模式就是 MVVM 模式。
    • 谢谢...既然我听说过“视图模型”这个术语,我正在网上找到更多有用的信息。我从 1.0 开始就没有使用过 MVC,所以这对我来说是全新的。
    【解决方案2】:

    您可以使用“System.ComponentModel.DataAnnotations”命名空间中的属性来装饰视图模型属性,并用于在更多视图和控制器操作中显示标签和验证模型。为此,您可以使用模型而不是视图模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      相关资源
      最近更新 更多