2011-11-30 69 views
0

我在母版頁中有一個Link元素。這個元素最初是不可見的。 在其中一個內容頁面中執行特定操作後,我需要使該鏈接元素可見。 我正在研究如何做到這一點。我可以從我的Controller方法做到,還是必須通過ajax做到這一點?根據內容頁面中的操作修改母版頁中的元素

+0

上述「規定動作」是其中所涉及的服務器的操作或者只有客戶? – Galled

+0

因此內容頁面調用控制器上的方法。該控制器具有邏輯,可以決定母版頁上的鏈接現在應該是否可見。 – imak

+0

是的,但我認爲你的動作返回一個json或布爾參數的東西,然後(如果你使用ajax)在你用'success'參數調用的函數中傳遞了布爾結果並用css更改鏈接, 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

添加評論以迴應您的評論。你可以請看看,讓我知道什麼可能是更好的方法 – imak

0

Find control on master pages

發現這一點,可能的幫助。 從你的代碼背後你可以找到控制,投它,並操縱它。

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

*第一次海報,對不起,如果我做錯了。

+0

請記住,這是MVC,而不是網絡形式 – imak

0

一個選項將使用TempData或ViewData。

在你的控制器,你的「某些行爲」也能像

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

然後,母版可以有以下

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