0

这就是我现在所拥有的,效果很好:

@Html.ActionLink("Home", "Index", "Home", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current"} : null)

我正在尝试做的是也给它一个 ID,即使条件为假,也要保留该 ID。所以是这样的:

@Html.ActionLink("Home", "Index", "Home", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current", id = "Home" } : new { id = "Home" })

另外,我想设置一个onclick()功能,而不是将点击定向到控制器。

4

1 回答 1

1

AFAIK,@Html.ActionLink()帮助程序只是为了创建到控制器的链接。但是有一个非常简单的解决方法可以解决您为其分配 onclick() 函数的问题。

示例:(我假设 onclick 事件的 javascript 函数)

<script type="text/javascript">
  function foo(string){
    alert(string);
    return false; //Very Important
  }
</script>

那么对于 ActionLink 你可以放:

@Html.ActionLink("Home", "", "", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current", @id = "Home",onclick="javascript:foo('foo2');" } : new { @id = "Home" })

注意return falseJS函数中的部分。如果您不希望在单击 ActionLink 后刷新页面,这一点非常重要。在 ActionLink 的 ActionName 和 RouteValues 中输入空字符串也会阻止它调用控制器。

至于您的 ID 问题的第一部分,请记住将 @ 放在 id 之前:

@Html.ActionLink("Home", "Index", "Home", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current", @id = "Home" } : new { @id = "Home" })

所以最终的 ActionLink 看起来像这样:

@Html.ActionLink("Home", "", "", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current", @id = "Home",onclick="javascript:somefunction()" } : new { @id = "Home" })

说了这么多,我不确定你是否可以指定: new {@id = "Home"}

所以要解决这个问题,我会建议这样的事情:

@if(ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home)
{
  @Html.ActionLink("Home", "", "", null, new { @class = "current", @id = "Home", onclick="javascript:alert('True');return false;" })
}
else
{
//Not sure what you would like to put in the else clause
@Html.ActionLink("Home", "", "", null, new { @class = "current", @id = "Home", onclick="javascript:alert('False');return false;"})
}
于 2013-03-22T09:13:29.953 回答