2011-11-30 13 views
0

マスターページにリンク要素があります。この要素は最初は見えません。 コンテンツページのいずれかで特定のアクションが発生したら、そのLink要素を表示する必要があります。 私はこれをどうやって行うことができるかを考えています。私はコントローラメソッドからそれを行うことはできますか、それともajax経由で行う必要がありますか?これを見つけたコンテンツページのアクションに基づいてマスターページの要素を変更する

+0

を持つことができ、「特定のアクションは、」サーバーに関与する行為でありますまたはクライアントのみ? – Galled

+0

したがって、コンテンツページはコントローラ上のメソッドを呼び出します。このコントローラーには、マスターページのリンクを表示するかどうかを決定するロジックがあります。 – imak

+0

はい、私はあなたのアクションがブール値のパラメータを持つjsonや何かを返すと思いますが、あなたが 'success'パラメータを使って呼び出す関数で(もしあなたがajaxを使っている場合)、ブール結果を渡して、 javascript。 – Galled

答えて

1

mvcでUIを操作するには、javascriptを使用する必要があります。あなたの「特定のアクションが」サーバーに関与している場合、私はあなたがajaxを使用する必要があると思う:あなたはアクションだけクライアントに関与している場合

$.ajax({ 
    url: "yourController/yourAction", 
    dataType: 'json', 
    success: function(json){ 
     var domEl = document.getElementById('theIdOfyourLink'); 

     if(json.show){ 
      domEl.style.display = 'block'; 
     }else{ 
      domEl.style.display = 'none'; 
     } 
    } 
}); 

あなただけのJavaScriptを使用することができます。あなたがあなたのリンク見えるかどうかにするために、CSSで遊んことができます終わり:

var yourfun = function(show){ 
    var domEl = document.getElementById('theIdOfyourLink'); 

    if(show){ 
     domEl.style.display = 'block'; 
    }else{ 
     domEl.style.display = 'none'; 
    } 

} 
+0

あなたのコメントに対するコメントを追加しました。あなたpleaeは一見を取ることができ、私はより良いアプローチになる可能性があることを教えてください – imak

0

Find control on master pages

、役立つかもしれません。 後ろのコードから、コントロールを見つけてキャストして操作するだけです。

Panel pnlWelcome2 = this.Master.FindControl( "pnlWelcome")as Panel;

*初回ポスター、間違っていたらごめんなさい。

+0

これはMVCでウェブフォームではないことを覚えておいてください。 – imak

0

1つのオプションはTempDataをかのViewDataを使用することです。お使いのコントローラであなたの「特定のアクションは、」次に

public ActionResult MyCertainAction() 
{ 
    TempData["ShowLink"] = true; 
} 

ようなことができ

、あなたマスターページには、以下の

@if (TempData["ShowLink"] != null && (bool)TempData["ShowLink"]) 
{ 
    <a href="#">My link</a> 
} 
関連する問題