0

すべてのページの右上に部分ビューが表示されています。リンクがありますが、これは私がいるページに基づいて変更する必要があります。したがって、ホームページを表示している場合は部分ビューにログイン リンクを表示する必要がありますが、ログイン ページを表示している場合は登録リンクを表示する必要があります。かみそりを使用してこれを行う方法を知っている人はいますか?

4

3 に答える 3

2

RouteData から現在のアクションとコントローラーを取得できます。

@{
    string controller = ViewContext.RouteData.GetRequiredString("controller");
    string action = ViewContext.RouteData.GetRequiredString("action");
    ... decide what to render
}

しかし明らかに、コンテキストに基づいて適切なリンクを生成するカスタム HTML ヘルパーを作成する方がはるかに優れた方法です。

于 2012-06-25T18:27:22.280 に答える
2

mvc のレイアウト機能を使用して、ビューに共通のルック アンド フィールを持たせ、その@section機能 (リンクにも説明があります) を使用して、ページごとに異なる部分をレンダリングできます。

EDIT 機能の
実装: _layout.cshtml 内:@section

@*if section is optional for some pages*@
@if (IsSectionDefined("Link"))
{
  @RenderSection("Link")
}

次に、各ページ内 (私の場合は index.cshtml):

@section Link
{
 <a href="#">the link</a>
}

セクションは一意の名前を使用して定義され、後で同じ名前を使用してレイアウト内の予想される場所にレンダリングされます。
リンクがビューのみに依存している場合、ルーティングからの情報に依存するよりももう少し明確な設計だと思います。理論的には、少なくとも、ビューはそれを引き起こしたルーティングエンジン/コントローラーを認識する必要がないためです。最初にレンダリングされます。

于 2012-06-25T18:27:27.793 に答える
0

両方のリンクをパーシャルに追加し、jquery を使用して、ドキュメントの準備ができている特定のページに対して非表示にします。

ログインページで、次のようにします。

$('#registerPartialLink').hide();
于 2012-06-25T19:56:26.593 に答える