[解決済み] 全ページ共通のデータをレイアウトに渡す
2022-05-29 21:55:18
質問
私はレイアウトページを持つウェブサイトを持っています。しかし、このレイアウトページは、すべてのページモデルがページタイトル、ページ名、およびいくつかのアクションを実行する私が行ったHTMLヘルパーのために実際にいる場所などのデータを提供しなければならない。また、各ページは、独自のビューモデルのプロパティを持っています。
どうすればいいのでしょうか?レイアウトを入力するのは悪い考えだと思われますが、これらの情報をどのように渡せばいいのでしょうか?
どのように解決するのですか?
各ページに同じプロパティを渡す必要がある場合、すべてのビューモデルで使用される基本ビューモデルを作成することが賢明でしょう。レイアウトページはこのベースモデルを使用することができます。
もしこのデータの背後にロジックが必要であれば、これはすべてのコントローラで使用されるベースコントローラに入れられるべきでしょう。
できることはたくさんありますが、重要なのは、同じコードを複数の場所で繰り返さないということです。
編集:以下のコメントから更新
コンセプトを示すための簡単な例を示します。
すべてのビューモデルが継承するベースとなるビューモデルを作成します。
public abstract class ViewModelBase
{
public string Name { get; set; }
}
public class HomeViewModel : ViewModelBase
{
}
レイアウトページはこれをモデルにすることができます。
@model ViewModelBase
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Test</title>
</head>
<body>
<header>
Hello @Model.Name
</header>
<div>
@this.RenderBody()
</div>
</body>
</html>
最後にactionメソッドにデータをセットします。
public class HomeController
{
public ActionResult Index()
{
return this.View(new HomeViewModel { Name = "Bacon" });
}
}
関連
-
[解決済み] アンチフォージェリーの必須項目「__RequestVerificationToken」が存在しない ユーザー登録時のエラーについて
-
[解決済み] MVC-3から4へ変換されたアプリでSystem.Web.Optimizationへの参照を追加する方法
-
[解決済み】@Scripts.Render("~/bundles/jquery")を使用する理由)
-
[解決済み] ASP.NET 4.5がWebサーバーに登録されていない
-
[解決済み] 全ページ共通のデータをレイアウトに渡す
-
[解決済み] 偽造防止トークンはユーザー""のためのものですが、現在のユーザーは "username "です。
-
[解決済み] ASP.NET MVC 4のデバッグモードでバンドルとミニフィケーションを有効にする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] アンチフォージェリーの必須項目「__RequestVerificationToken」が存在しない ユーザー登録時のエラーについて
-
[解決済み] MVC-3から4へ変換されたアプリでSystem.Web.Optimizationへの参照を追加する方法
-
[解決済み] asp.net MVCの@RenderSectionとは?
-
[解決済み】@Scripts.Render("~/bundles/jquery")を使用する理由)
-
[解決済み] ASP.NET 4.5がWebサーバーに登録されていない
-
[解決済み] 全ページ共通のデータをレイアウトに渡す
-
[解決済み] 偽造防止トークンはユーザー""のためのものですが、現在のユーザーは "username "です。
-
[解決済み] ASP.NET MVC 4のデバッグモードでバンドルとミニフィケーションを有効にする