2012-05-03 17 views
0

_Layout.cshtmlには、特定のURLのみを表示したいという部分ビューがあります。 私の最初の考えは私の部分的なものでした。モデルとして文字列を使用します@model String。 呼び出されたactionmethodでこれを返します return PartialView( "_ MyPartial"、新しい文字列{Request.FilePath}); 部分的には、私はそれが含まれているURLが部分を表示することができるURLかどうかを確認するモデルをチェックする私の外側のdivをラップするifブロックを持っています。URLに基​​づいて部分ビューを表示する

ブロックチェック

@if(Model == "/Test/Home") 
{ 
    <div> 
     Just an example 
    </div> 

} 

これを行うための最良の方法だろうどのような場合、私は中にURLをハードコードしなければならないので、私はこの方法を好きではありませんか?

おかげ

答えて

3

あなたが最初に意図したように、あなたのビュー内で検証を行った場合でも、ハードコードされた文字列を使用する必要はありません。

あなたの現在のURLを取得するために

Request.Url.AbsolutePath 

を使用することができますし、

Url.Action("action", "controller") 

は許容できない場所を生成します。

これは、コントローラ内に部分的な表示を表示するかどうかを決定する論理を維持すると言います。

if(showPartialView) 
    return PartialView("_MyPartial"); 
else 
    return new EmptyResult(); 
+0

ありがとうございます。これは多くのクリーナーであり、正しい場所に責任を持ってください。 – Cam

0

要求に基づいてアクションを決定することは、コントローラの責任です。コントローラーがビューを選択するので、なぜ部分をも選択しないでください。コントローラーで必要な部分があればそれを把握し、ビューモデルのビューに渡します。

関連する問題