Asp.net mvc 我应该调用每个MVC视图Index.aspx吗?
如果我没有弄错的话,ASP.NET MVC的惯例似乎希望我对控制器视图执行以下操作 这就是我创建“产品”目录的当天,我将“索引”视图放入其中。然后我创建一个“ProductsController”,并在其上创建一个“Index”方法,该方法返回一个视图。返回没有参数的just View()将转到并获取“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
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”)]并调用其他方法,然后返回不同的网名视图。不过我已经决定买鹦鹉了