代码之家  ›  专栏  ›  技术社区  ›  Simon_Weaver

我应该调用每个MVC视图Index.aspx吗?

  •  2
  • Simon_Weaver  · 技术社区  · 16 年前

    这就是我创建“产品”目录的当天,我将“索引”视图放入其中。然后我创建一个“ProductsController”,并在其上创建一个“Index”方法,该方法返回一个视图。返回没有参数的just View()将转到并获取“Index.aspx”页面,因为它与方法同名。

     public class ProductsController : Controller
        {
            public ActionResult Index()
            {
                return View();   // looks for Index.aspx in Products directory
            }
        }
    

    现在一切都好了。但我最终会有10亿个Index.aspx页面,我是这些从不关闭任何文件的人之一,所以我最终会发疯。

    或者,我可以创建Products/Products.aspx并将控制器更改为以下内容:

     public class ProductsController : Controller
        {
            public ActionResult Index()  // my default routing goes to Index (from sample project)
            {
                return View("Products");
            }
        }
    

    我理解它是如何工作的,而且在MVC设计模式中完全可以做到这一点。这不是黑客之类的。

    我的问题(听了之后) this PDC视频)是指MVC(或任何正确的说法)倾向于约定而非定制。

    所以我想知道我是否错过了第三种方式,或者人们是否可以在VisualStudio中使用50个索引选项卡?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Matthew    16 年前

    让每个控制器的默认操作具有相同的名称只会简化路由(检查global.asax)。此外,it all things(产品、书籍、联系人等)为相同的功能使用相同名称的操作/视图,这样代码就更易于导航和理解。当作为团队的一部分工作时,这种约定的使用尤其重要,因为它将鼓励开发人员之间的代码一致性。

    当我看另一个问题的时候,我跑了过去 SimplyRestfulRouting 在codeplex上的MVCContrib项目中。这可能会给你一些想法。

        2
  •  2
  •   Mehrdad Afshari    16 年前

    我认为应该在动作之后命名方法,并命名视图(如果它有意义,并且动作之间不共享,则与动作相同)。您可能应该根据需要更改路由机制 Index 不是一个真正的描述性名称。动作名称应该表示它的功能(就像任何方法一样),不应该硬编码 指数 或者类似的。应改为编辑工艺路线。

        3
  •  0
  •   tvanfosson    16 年前

    这只是一种模式。使用这种模式,但要让它适合你。就个人而言,我喜欢按视图的功能命名视图,我没有很多Index.aspx页面,因为我没有很多索引。