Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我应该调用每个MVC视图Index.aspx吗?_Asp.net Mvc_Convention - Fatal编程技术网

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

Asp.net mvc 我应该调用每个MVC视图Index.aspx吗?,asp.net-mvc,convention,Asp.net Mvc,Convention,如果我没有弄错的话,ASP.NET MVC的惯例似乎希望我对控制器视图执行以下操作 这就是我创建“产品”目录的当天,我将“索引”视图放入其中。然后我创建一个“ProductsController”,并在其上创建一个“Index”方法,该方法返回一个视图。返回没有参数的just View()将转到并获取“Index.aspx”页面,因为它与方法同名 public class ProductsController : Controller { public ActionRe

如果我没有弄错的话,ASP.NET MVC的惯例似乎希望我对控制器视图执行以下操作

这就是我创建“产品”目录的当天,我将“索引”视图放入其中。然后我创建一个“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设计模式中完全可以做到这一点。这不是黑客之类的

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


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

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

我认为应该在操作后命名方法并命名视图(如果有意义,并且操作之间不共享,与操作相同)。您可能应该更改路由机制,因为
Index
实际上不是一个描述性名称。操作名称应该表示它的功能(就像任何方法一样),不应该硬编码到
索引
或类似的内容。应改为编辑路由。

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


在看另一个问题时,我遇到了codeplex上的MVCContrib项目。这可能会给你一些想法。

但“index.aspx”的想法肯定与“standard”index.htm或index.html约定相同。这与任何一种指数无关。他们本可以称之为Default,实际上我认为这是一个更好的方法名称,但MS可能想摆脱Default。aspxi还没有进入路由!我会更深入地研究,但我认为理解它肯定会教我很多东西。今天只是想学习MVC,同时为他重新设计同事的笔记本电脑,为什么不呢?它们位于不同的目录中,并执行索引(或列表)功能。为什么不调用显示事物列表索引(或列表)的所有视图呢?+1 Matthew,在路由中保持一致是最好的做法,利用SimpleRestfulRouting公开的功能可以帮助您做到这一点。我已经有了这样的想法,当我看到一个索引时,它是默认的路由和视图。我已经习惯了很多“索引”文件。当然可以简化路由,但您当然可以使用[ActionName(“Index”)]并调用其他方法,然后返回不同的网名视图。不过我已经决定买鹦鹉了