2009-07-03 59 views

回答

1

這聽起來並不是非常明智的控制器來控制輸出。 所有控制器都會將viewdata指定給輸出視圖,並讓視圖確定如何處理它。

請參考默認的ASP.net MVC模板瞭解它是如何完成的。

5

我不認爲有一種方法可以直接從控制器直接設置標題,而不需要設置視圖來接受某些與信息相關的數據。特別是因爲要真正設置標題,您需要在標籤之間輸出數據。

這就是說,我相信你可以做些什麼來讓自己更容易。我或多或少只是在這裏大聲思考,所以我不能保證這會起作用。如果我確信我將設置我的稱號是對我的每一個動作,然後我會保持在母版頁的標題標籤,並創建一個自定義屬性,所以你可以做這樣的事情:

[CustomTitleAttribute(Title = "Hello World")] 
public ActionResult Index() 
{ 
    return View(); 
} 

會由您來實現該屬性並設置如何在視圖和/或母版頁中捕獲這些信息。

一般來說,由於您可能希望標題在具有動態數據的頁面上更改,因此上述內容可能不是您應該執行的操作。相反,只需採用某種方式來確定視圖模型中需要的標題。甚至可能是後續視圖模型可以繼承的基本視圖模型。

public class BaseViewModel 
{ 
    public string PageTitle { get; set; } 
    public string PageDescription { get; set; } 
    //etc. 
} 

然後在視圖中,你可以做到這一點,甚至可以在你的母版頁,我認爲:

<title><%= Model.PageTitle %></title> 

我覺得從分離關注的角度來看(這是有點整點)會是最好的方式去。