子工作在出价,以保持我的意见我的新的MVC应用5内举办,我已经建立了一个文件夹结构如下:在自定义视图引擎
Views
|-- Account
| |-- Partials
| |-- EditUser.cshtml
| |-- ListUsers.cshtml
| |-- Home.cshtml
|
|-- Admin
|-- Partials
|-- AnotherPartialView.cshtml
现在,我想为此实现自定义视图引擎,因此我不必在主视图文件夹中指定Partials
文件夹的完整路径。
我创建了一个自定义视图引擎是这样的:
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine()
: base()
{
var viewLocations = new[] {
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/{1}/Partials/{0}.cshtml"
};
this.PartialViewLocationFormats = viewLocations;
this.ViewLocationFormats = viewLocations;
}
}
并将其注册在Application_Start()
在Global.asax中
protected void Application_Start()
{
/* snip */
ViewEngines.Engines.Add(new CustomViewEngine());
}
编辑:
我称之为局部像这样的意见:
[HttpGet]
/// http://localhost/Account/ListUsers
/// View is located in ~/Views/Account/Partials/ListUsers.cshtml
public ActionResult ListUsers()
{
/* populate model */
return PartialView("ListUsers.cshtml", Model);
}
我的想法是,如果我在视图位置中包含控制器参数{1}
后跟Partials
文件夹,这将使我无法将每个Partials
子文件夹作为位置。这也意味着我只能通过名称而不是完整路径来引用视图。
但是,我仍然收到在任何搜索位置找不到部分视图的错误。
任何帮助,将不胜感激。
谢谢!
你可以显示你想如何呈现的局部视图的例子吗?因为我已经在测试项目中复制了你的代码,并且它对我来说似乎工作正常。 另外,您在此处共享的视图引擎类称为“CustomViewEngine”,但您将“IridiumViewEngine”添加到引擎。这是你的实际代码还是粘贴时出错? – TKharaishvili
@GwynBleidd糟糕,是'IridiumViewEngine'在复制/粘贴过程中出错。我已经用我的部分视图返回的方式更新了我的帖子。谢谢! – Dave