2009-11-05 63 views
1

我試圖隱藏HTML.ActionLink默認情況下頁面第一次呈現時,然後控制基於用戶頁面的可見性。有什麼建議麼? 謝謝!有沒有辦法使HTML.ActionLink默認不可見?

+0

我嘗試了兩個建議,但沒有奏效。 這是我最後一次嘗試,它仍然可以在頁面上看到。 <%= Html.ActionLink(「Edit」,「Edit」,「Package」,new {id = Model.ID,@style =「display:none」},null)%> – 2009-11-05 17:08:51

+0

style =「display:none ;」 「通知」;「並拿出@不需要它 – Mark 2009-11-05 17:22:41

+0

試過了,仍然不起作用。 :) 我應該提到這個ActionLink是通過循環部分視圖中的模型項目添加的。 – 2009-11-05 18:20:36

回答

0

默認情況下,使用CSS display:none屬性呈現鏈接。然後使用Javascript將display切換爲一個值,以便在需要時顯示鏈接。更多信息here

jQuery提供了show()和hide()effects,允許您輕鬆切換一個或多個元素的可見性。

2

您可以通過設置它的html屬性來在動作鏈接上設置任何樣式。

Html.ActionLink(
    "LinkName", 
    "Action", 
    null, 
    new { @style = "display:none" }); 
+0

沒有任何建議可行。 我可能應該提到這個ActionLink位於Partial View的表格中。這可能是它的原因嗎? – 2009-11-05 18:08:56

+0

如果你把它放在局部視圖中,你需要確保View使用它有一個相應的控制器來處理你定義的動作。我做的是 – Joseph 2009-11-05 18:21:55

+0

。此ActionLink的操作完美。這個隱藏的東西應該很容易,但由於某種原因,它變成了一個真正的ha。。 :) – 2009-11-05 18:24:04

0

創建具有htmlAttributes您的操作鏈接助手超載,給它一個類

Html.ActionLink("link","link",null, new { @class=model.mystatus }) 

您將設置從屬性@class值模型中的那麼無論應用「顯示:無;」到CSS中的類,或者使用jquery - > $('。statusclass')將元素設置爲隱藏。hide();

0

我想你想控制由Html.ActionLink助手方法生成的標記的可見性,是嗎?如果是的話,你可以dinamically爲如下標籤中指定類:

<%=Html.ActionLink("link", "MyAction", null, new { @class = ViewData["actionLinkClass"] })%> 

在您的控制器的操作方法,你可以定義可見還是隱藏風格ViewData["actionLinkClass"]值。

0

唯一有效的方法是將ActionLink封裝在一個範圍內,指定一個類,將其隱藏在CSS中,並用JavaScript顯示它。出於某種原因將類名直接分配給ActionLink不起作用。

感謝大家的幫忙!

0

這裏有一個技巧:

  • 添加CSS類鏈接
  • CSS類添加到每一頁的body標籤,因爲你需要
  • 編輯你的CSS使用許多獨特價值文件以顯示/隱藏鏈接爲基礎的身體標記類和鏈接上的類的組合。

範例CSS文件:

body.events .myLink, 
body.about .myLink { 
    display:none; 
} 
body.programs .myLink { 
    display:inline; 
} 

那麼你不需要做任何時髦與ActionLink的。這並沒有解決你爲什麼要發佈一個你不想首先展示的鏈接的問題,但我相信你有一個很好的理由。

0

要決定天氣隱藏或顯示鏈接,您需要通過Model或ViewData提供此信息。我想你有一個母版頁的鏈接。

因此,第一步是爲您的網站中的所有視圖提供該信息。您可以通過創建基本控制器做到這一點,並重寫的方法(當然,所有的控制器應繼承的形式新):

protected override void OnActionExecuted(ActionExecutedContext filterContext) 
{ 
    if (filterContext.ActionResult is ViewResult) { 
     ViewData["Shared-ShowTheLink"] = IsLinkeVisible(filterContext) ? "non-null" : null; 
    }  
} 

private bool IsLinkeVisible(ActionExecutedContext filterContext) { 
    // Show on the home page only, for example 
    var controllerName = filterContext.RouteData.Values["controller"]; 
    var actionName = filterContext.RouteData.Values["action"]; 

    var isHome = string.Compare(controllerName, "Home", StringComparison.InvariantCultureIgnoreCase) == 0; 
    var isIndex = string.Compare(actionName, "Index", StringComparison.InvariantCultureIgnoreCase) == 0; 
    return isHome && isIndex; 
} 

之後,你需要到您的主網頁(或視圖),並做一些事情像這樣的(假設WebForms的視圖引擎):

<% if (ViewData["Shared-ShowTheLink"] != null) { %> 
    Html.ActionLink("Link Text", "Action", "Controller"); 
<% } %> 

現在你的鏈接應該是唯一的家庭/索引可見。
根據需要更改此修改IsLinkeVisible方法。

乾杯。

相關問題