2010-08-27 37 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 
} 

雖然可能會使用一些名稱約定。

相關問題