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 false
JS関数の部分に注意してください。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;"})
}