1

次のような URL を持つ mvc4 サイトを構築しようとしています。

  • abc.com/site1/home/about
  • abc.com/site2/home/about

それぞれが完全に異なるウェブサイト/ページを参照している場合

メニュー項目 - home/about/contact/... などもユーザー定義のテキストとリンクで異なります

~/Views/Shared/_Layout.cshtml の次のコードは、

                <ul id="menu">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                    <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                </ul>

に変わります

            <ul id="menu">
                @foreach( var nav_config in dbHelper.getConfig(HttpContext.Current)) 
                       <li>@Html.ActionLink(nav_config.Text, "MyAction", "MyController")</li>
            </ul>

以下のリンクで定義されている baseController のプロパティであるビューから {SiteName} を参照する簡単な方法があるかどうか疑問に思っています

または config db からメニューを取得するより良い方法はありますか?

{SiteName} は、問題の回答を使用して実装されています - {sitename} パラメータを MVC コントローラ アクションに渡す

4

1 に答える 1

0

厳密に言えば、ビューは何が提供されたかを気にするべきではありません。パラメータは、基本モデル プロパティの最有力候補です。

すべてのモデルに次の基本クラスを実装させます。

public abstract class ModelBase
{
    public string SiteName { get; set; }
}

次に、モデルを使用するようにレイアウトを変更しますModelBase

次に、必要なものを好きな場所に配置します。

于 2013-05-07T20:57:44.197 に答える