2012-09-21 76 views
0

有什麼方法可以將視圖文件名稱設置爲Action上的屬性?在ASP .NET中設置視圖名稱爲動作屬性MVC3

例如:

[ViewName("~/Views/CustomerInformation.cshtml")] 
public ActionResult ViewCustomers() 
{ 
    // 
} 

目的是在運行時動態改變視圖文件。

+0

*目的是在運行時動態更改視圖文件*您可以詳細說明嗎? – VJAI

回答

2

當然,你可以覆蓋OnActionExecuted方法並替代使用在動作過濾器中指定的原始視圖名稱:

public class ViewNameAttribute : ActionFilterAttribute 
{ 
    private readonly string _viewName; 
    public ViewNameAttribute(string viewName) 
    { 
     _viewName = viewName; 
    } 

    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     var result = filterContext.Result as ViewResultBase; 
     if (result != null) 
     { 
      result.ViewName = _viewName; 
     } 
    } 
} 

,然後你可以只返回一個虛擬視圖:

[ViewName("~/Views/CustomerInformation.cshtml")] 
public ActionResult ViewCustomers() 
{ 
    return View(); 
} 

但我不知道你的自定義操作過濾器的實際應用是什麼的時候,你可以直接寫:

public ActionResult ViewCustomers() 
{ 
    return View("~/Views/CustomerInformation.cshtml"); 
} 

您似乎沒有將這個自定義操作過濾器帶到框架已經提供的許多值。

相關問題