查看目录的命名和文件命名非常重要,因为ASP.NET MVC框架对它们做了某些假设。如果你不符合这些假设,那么你必须编写代码让框架知道你在做什么。一般来说,除非你有充分理由不遵守,否则你应该遵守这些假设。
让我们看看最简单的可能控制器操作:
public ActionResult NotAuthorized()
{
return View();
}
因为没有视图名称已在调用指定查看(),该框架将推定视图文件名将是一样的行动名称。该框架有一个名为ViewEngine的类型,它将提供扩展。默认的ViewEngine是WebFormViewEngine,它将使用该名称并向它附加一个.aspx。所以在这种情况下,完整的文件名将是NotAuthorized.aspx。
但是在哪个文件夹中会找到该文件?再次,ViewEngine提供这些信息。随着WebFormViewEngine,它将在两个文件夹:〜/查看/共享和〜/查看/ {控制器}
所以,如果你的控制器被称为的AccountController,它看起来在〜/查看/帐户
但有可能是你不想遵守这些规则的时候。例如,两个不同的动作可能会返回相同的视图(使用不同的模型或其他东西)。在这种情况下,如果你在你的行动明确指定视图名称:
public ActionResult NotAuthorized()
{
return View("Foo");
}
注意与WebFormViewEngine,在“视图名称”通常是相同的文件名,扩展名少,但框架不需要其他视图引擎。
同样,您可能也有理由希望您的应用程序查找视图和非默认文件夹。你可以通过创建你自己的ViewEngine来做到这一点。我在this blog post中展示了这种技术,但是类型名称是不同的,因为它是为较早版本的框架编写的。然而,基本的想法仍然是一样的。
视图中的文件夹可以包含子文件夹吗?如果是这样,主计长如何接触他们?例如... Admin/Profile/Edit/1 – 2009-02-10 16:46:28