2010-08-27 35 views
0

有没有办法在返回部分视图时设置约定?例如: 我有以下几点:有没有办法在返回部分视图时设置约定

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

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

我目前通过局部视图名称可以明确地PartialView助手(即返回PartialView(“_家”);)

注:不使用T4MVC 。

感谢

回答

0

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

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

是这样的:

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

注意,这种变化将应用到所有的局部视图的查找。

+0

不错!这导致我重写webviewformengine的FindPartialView方法到string.Format(“_ {0}”,partialView) – bonskijr 2010-08-28 07:52:36

0

我beleive你应该总是通过局部视图名称明确,因为在搜索它抛出一个异常,否则文件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 
} 

虽然可能会使用一些名称约定。

相关问题