マスターページにリンク要素があります。この要素は最初は見えません。 コンテンツページのいずれかで特定のアクションが発生したら、そのLink要素を表示する必要があります。 私はこれをどうやって行うことができるかを考えています。私はコントローラメソッドからそれを行うことはできますか、それともajax経由で行う必要がありますか?これを見つけたコンテンツページのアクションに基づいてマスターページの要素を変更する
答えて
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';
}
}
あなたのコメントに対するコメントを追加しました。あなたpleaeは一見を取ることができ、私はより良いアプローチになる可能性があることを教えてください – imak
、役立つかもしれません。 後ろのコードから、コントロールを見つけてキャストして操作するだけです。
Panel pnlWelcome2 = this.Master.FindControl( "pnlWelcome")as Panel;
*初回ポスター、間違っていたらごめんなさい。
これはMVCでウェブフォームではないことを覚えておいてください。 – imak
1つのオプションはTempDataをかのViewDataを使用することです。お使いのコントローラであなたの「特定のアクションは、」次に
public ActionResult MyCertainAction()
{
TempData["ShowLink"] = true;
}
ようなことができ
、あなたマスターページには、以下の
@if (TempData["ShowLink"] != null && (bool)TempData["ShowLink"])
{
<a href="#">My link</a>
}
を持つことができ、「特定のアクションは、」サーバーに関与する行為でありますまたはクライアントのみ? – Galled
したがって、コンテンツページはコントローラ上のメソッドを呼び出します。このコントローラーには、マスターページのリンクを表示するかどうかを決定するロジックがあります。 – imak
はい、私はあなたのアクションがブール値のパラメータを持つjsonや何かを返すと思いますが、あなたが 'success'パラメータを使って呼び出す関数で(もしあなたがajaxを使っている場合)、ブール結果を渡して、 javascript。 – Galled