有没有办法让HTML.ActionLink默认不可见?

时间:2009-11-05 16:59:41

标签: javascript html asp.net-mvc actionlink

我试图在页面首次渲染时默认隐藏HTML.ActionLink,然后根据用户所在的页面控制它的可见性。有什么建议? 谢谢!

7 个答案:

答案 0 :(得分:2)

您可以通过设置html属性来设置操作链接上的任何样式。

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

答案 1 :(得分:0)

默认情况下,使用CSS display:none属性呈现链接。然后使用Javascript将display切换为在需要时显示链接的值。更多信息here

jQuery提供show()和hide()effects,允许您轻松切换元素或元素的可见性。

答案 2 :(得分:0)

使用htmlAttributes重载创建动作链接助手,为其提供类

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

您可以从模型中的属性设置@class值,然后应用“display:none;”到CSS中的类或使用jquery将元素设置为隐藏 - > $(”。statusclass')隐藏();

答案 3 :(得分:0)

我想你想控制Html.ActionLink助手方法生成的标签的可见性,是吗?如果是,您可以在下面指定标签的类,如下所示:

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

在控制器操作方法中,您可以为可见或隐藏样式定义ViewData["actionLinkClass"]值。

答案 4 :(得分:0)

唯一有效的方法是将ActionLink包装在一个范围内,分配一个类,将其隐藏在CSS中,并在JavaScript中显示它。出于某种原因,将类名直接分配给ActionLink是行不通的。

感谢大家的帮助!

答案 5 :(得分:0)

这是一种技术:

  • 将CSS类添加到链接
  • 将CSS类添加到每个页面的body标记中,根据需要使用尽可能多的唯一值
  • 根据body标签类和链接上的类的组合编辑CSS文件以显示/隐藏链接。

示例CSS文件:

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

然后你不需要用ActionLink做任何有趣的事情。这并没有解决为什么你发布一个你不希望首先显示的链接的问题,但我相信你有充分的理由。

答案 6 :(得分: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");
<% } %>

现在您的链接应仅在Home / Index上可见 要根据需要更改此修改IsLinkeVisible方法。

干杯。