这就是我现在的工作正常:
@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()
功能,而不是将点击指向控制器。
答案 0 :(得分: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" })
注意JS函数中的return false
部分。如果您不希望在单击ActionLink后刷新页面,这一点非常重要。在ActionLink的ActionName和RouteValues中输入空字符串也会阻止它调用控制器。
关于身份证问题的第一部分,请记得在身份证号码前加上@:
@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;"})
}