【问题标题】:MVC - Which are controllers and which are views?MVC - 哪些是控制器,哪些是视图?
【发布时间】:2011-08-08 20:19:57
【问题描述】:

我在使用 MVC 映射我的网站时遇到问题。

以下页面层次结构的控制器和视图是什么?

索引(首页)

->玩家

--->目录

----->转发

----->防御

--->简介

----->新闻

----->统计

->团队

--->目录

----->部门

--->团队简介

----->新闻

----->统计

以 /Players/Profile/Stats 为例,“Profile”是控制器,“Stats”是视图吗?什么是“玩家”? “玩家”的默认(索引)页面是“目录”。 “玩家”也会成为控制器吗?

有没有更好的方法来构建这个网站?

感谢您的回答。一个现有的例子是http://sports.yahoo.com/nhl/players/4351 这是一个个人资料页面。如果您单击其他选项卡(例如拆分统计),则会出现另一个视图。这就是我想要的结构。在 yahoo URL 中,“玩家”似乎是一个视图,而 ID 是视图的一个参数。但是,当您单击其他选项卡时,似乎将另一个视图附加到 URL(例如 http://sports.yahoo.com/nhl/players/4351/splits)。在这种情况下,“玩家”是一个视图,还是“拆分”一个视图?

【问题讨论】:

    标签: model-view-controller


    【解决方案1】:

    Controller 是一个创建的类,其工作是从 get/post 中获取数据并确定应该返回哪个 View。这是通过称为 Actions

    的控制器方法完成的

    一个例子...

    MyController --> 有一个 Action --> Home --> Home Action 返回 --> Home View

    【讨论】:

      【解决方案2】:

      您可以根据自己的喜好构建应用。不过这看起来很合理。

      在您的示例中,“/Players/Profile/Stats”播放器将是 MVC 应用程序中的一个区域。 Profile 将是您的 ProfileController.cs,而 Stats 将是该控制器中的一个操作(它具有同名的相应视图:Stats.aspx)。

      【讨论】:

      • 为什么玩家和团队不是区域,然后目录和配置文件是具有特定操作的控制器?
      • 知道了,误读为“玩家”和“个人资料”,“统计数据”将是“区域”
      【解决方案3】:

      控制器和操作并不总是与您介绍的导航图一一对应。但是,在您的情况下,我可能会创建以下控制器:

      PlayerController
      TeamController
      

      PlayerController 可能会有以下动作:

      GetAll()
      GetForwards()
      GetDefense()
      GetProfile(id)
      GetNews(id)
      GetStats(id)
      

      TeamController 可能有:

      GetAll()
      GetByDivision(id)
      GetProfile(id)
      GetNews(id)
      GetStats(id)
      

      但是,由于仅从您的导航地图很难准确地判断出意图,因此我无法确定。

      【讨论】:

        猜你喜欢
        • 2013-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多