有没有办法在返回局部视图时设置约定

时间:2010-08-27 08:37:47

标签: asp.net-mvc asp.net-mvc-2

返回局部视图时有没有办法设置约定?例如: 我有以下内容:

HomeController ---> Home(action Method) --> _Home.ascx (partial view)

AboutController ---> About(action Method) --> _About.ascx (partial view)

我目前正在将部分视图名称显式传递给PartialView助手(即返回PartialView(“_ home”);)

注意:不使用T4MVC。

由于

2 个答案:

答案 0 :(得分:0)

我相信你应该总是明确地传递部分视图名称,因为搜索它的文件ViewEngineCollection.cs中的代码会引发异常,否则:

public virtual ViewEngineResult FindPartialView(ControllerContext controllerContext,
    string partialViewName) 
{
    // skipped code

    if (string.IsNullOrEmpty(partialViewName)) 
    {
        throw new ArgumentException(MvcResources.Common_NullOrEmpty,
            "partialViewName");
    }

    // skipped code
}

虽然如果重写此方法,您可能会使用某些名称约定。

答案 1 :(得分:0)

负责将视图名称映射到正确文件的MVC运行时组件称为ViewEngine。在ascx文件的情况下,它是默认的WebFormViewEngine。它公开包含默认查找模式的属性。例如,您可以修改PartialViewLocationFormats而不是:

"~\Views\{1}\{0}.ascx"
"~\Views\Shared\{0}.ascx"

是这样的:

"~\Views\{1}\_{0}.ascx"
"~\Views\Shared\_{0}.ascx"

请注意,此更改将适用于所有部分视图查找。