2009-08-28 32 views
2

webforms私はいつも私のmasterpageを使って、現在のURLに基​​づいてページタイトルとメタ記述を設定します。私は私のAsp.net Mvcプロジェクトのために同じことを考えていたが、私はどこから始めるべきかわからない。コントローラーやアクションに基づいてタイトル/説明を設定することができればいいと思います。私がこれをするのは、すべてが1つの場所にあることが好きなので、間違いを見つけやすくなるからです。Asp.net Mvc:動的ページタイトル

編集:
答えを読んで、私はxmlファイルから情報を取得するために涼しいかもしれない考えていたいくつかのグーグルでの後。 XMLはこのような何かを見では:

<website title="default title for webpage"> 
    <controller name="HomeController" title="Default title for home controller"> 
     <action name="Index" title="title for index action" /> 
    </controller> 
</website> 

を私はAsp.net MVCに新しいですので、私はこれを初期化するところを確認していません。

+0

私の質問を少し更新してもらいたいです。他の質問にコメントすることは正しいようではなく、答えを投稿することはさらに愚かに聞こえた。 – Pickels

+1

いいえ、問題の新しい情報や洞察がある場合は、質問の更新は大変です。編集/更新を追加するのが望ましいです。 :) –

答えて

0

私は数日後、XMLファイルから読み込むカスタムフィルタを作成しました。

私はあなたが変なものを見たら、私を許してくださいので、私はAsp.net MVCと "リアル" のC#のコードで非常に初心者だ
http://www.copypastecode.com/9797/
http://www.copypastecode.com/9809/
http://www.copypastecode.com/9805/

をcopypastecode.comするためのコードを追加しました。もし誰かがそれを最適化したいのであれば、よりよい解決策を答えとして投稿することができます。

私が試してみようとしているのは、フィルタなしですべてのコントローラで有効にすることです。しかし、ロジックをフックする場所はわかりません。誰かが私を正しい方向に押し込むことができれば、私に知らせてください。

+0

リンクはすべて死んでいる – qujck

0

マスターページのモデルからそのデータをプルするだけで、そのモデルに適切なデフォルト値を設定できます。

7

私は、次の戦略を提案:

は、モデルの階層を作成します。

abstract class MasterModel 
{ 
    public string PageTitle { get; set; } 
} 

abstract class HomeBaseModel : MasterModel 
{ 
    PageTitle = "Home"; 
} 

abstract class UsersBaseModel : MasterModel 
{ 
    PageTitle = "Users"; 
} 

/************************************/ 

class HomeNewsModel : HomeBaseModel 
{ 
    PageTitle = "News"; 
} 

class UsersProfileModel : UsersBaseModel 
{ 
    PageTitle = "Profile"; 
} 

あなたはページのタイトルを保持するためのマスターモデルを定義し、コントローラのデフォルトのタイトルを保持するためのベースモデルを作成します。こうすることで、各コントローラーのタイトルを明示的に定義したり、このコントローラーのデフォルトのタイトルが使用されるようにすることができます。

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

をし、それが行われています:

その後、あなたのマスタービューであなたは一度だけ書きます。

+1

このモデルはどのようにしてマスターページに公開されますか?私はこれのノブです。 –

+0

コントローラはViewModelをビューに送信し、コントローラでは 'PageTitle'プロパティを設定します。 –

関連する問題