【问题标题】:Correct Approach of following MVC [closed]遵循 MVC 的正确方法 [关闭]
【发布时间】:2014-02-12 00:20:50
【问题描述】:

我从去年开始就在 MVC 工作。我遵循 MVC 方法,即简单的方法而不是存储库模式。现在,我开始了解将 Repository 与依赖注入一起使用的优点,我觉得它以正确的方式遵循 oops。 这是我的想法。 在我的一个示例/测试项目中,我开始使用存储库并且对此几乎没有疑问:::

1) 当我们使用 EDMX 时,假设我有一个名为“Users”的表,它会自动 创建一个名为“用户”的类,其中包含所有字段作为属性。 我通常遵循的是我创建一个模型层并在该模型层的名称中添加一个类 “myUsers”将包含与用户类相同的属性。现在,我将绑定视图 带有“myUsers”的页面,因此它不能直接处理 DAL。

每当我从我的视图页面发布内容时,该对象都会出现在“MyUsers”模型中, 在这里我再次做这样的事情。 Users=MyUsers(我通过对每个属性执行此操作来执行此操作,例如:: Users.Name=MyUsers.Name 然后我将它保存在数据库中。

我使用上述方法,在我的应用程序中我使用了上述方法。 现在我的问题是 我可以直接将我的视图页面与“用户”类绑定吗?当我看到一些应用程序时, 它正在发生。它减少了很多工作和应用程序的开销。

什么是正确的方法?直接处理DAL还是应该有模型 在他们之间?

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


    【解决方案1】:

    “正确的方法”是主观的。我们喜欢创建纯粹为了在视图中显示域对象而存在的 ViewModel,因为这意味着我们可以将视图逻辑与域分离。我们可能并不总是希望显示/加载域对象的每个属性。再举一个例子,我们将 DataAnnotations 属性放在 ViewModel 上进行验证。但我们将域对象保留为漂亮的小 POCO。

    不过,像您一样手动映射它们是非常浪费时间的。有一些框架可以为您做到这一点.. 例如:

    【讨论】:

    • 先生,这意味着创建充当单独层的视图模型更好,并将值分配给域类,我可以使用您建议的上述框架。对吧,先生?
    • 请记住..这里没有正确或错误的答案。每个项目都不同。
    • 但还有一件事要问先生。我可以假设这是 80% 的正确方法吗?
    【解决方案2】:

    在我看来,这是正确的架构。

    下面我用cmets解释一下答案。

    【讨论】:

    • 这真是一个好问题。当我刚接触 MVC 时,我也面临同样的问题。您认为的方法是错误的。您不能直接在 View 中编写用于存储在数据库中的模型。你是对的,虽然你的代码可以正常工作,但从攻击者的角度来看,你已经直接访问了你的数据库。
    • 什么? “直接访问您的数据库”......荒谬。
    • 我用的词完全错误。我的意思是直接访问为“违反代码”(但不是直接)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多