2009-11-05 41 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方法。

干杯。

相关问题