我试图在页面首次渲染时默认隐藏HTML.ActionLink,然后根据用户所在的页面控制它的可见性。有什么建议? 谢谢!
答案 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文件:
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方法。
干杯。