Html.ActionLink
で生成されたものにHTML IDを与えて、現在の場所に応じてCSSを変更できるようにします。リンクのセットを持つMasterPage
があり、そのアクティブな#idのcssを変更するJqueryでアクティブな「タブ」を区別したい
今私は使用しています:
<%: Html.ActionLink("Some View", "Index", "controller")%>
以下を生成します。
<a href="/controller">Some View</a>
生成したい:
<a id="something" href="/controller">Some View</a>
それは可能ですか?私はもう試した:
<%: Html.ActionLink("Some View", "Index", "controller", new {id="blahbla")%>
しかし、それは以下を生成します:
<a href="/controller/Length?5">Some View</a>
あなたは正しい軌道に乗っていました。コードに} expected
エラーが発生する可能性のあるタイプミスがあるため、なぜ機能しなかったのかわかりません。以下はあなたが探しているものです:
<%= Html.ActionLink("Test Link", "SomeAction", "SomeController",
null, new {id = "someID" }) %>
次のHTMLを生成します:
<a href="/SomeController/SomeAction" id="someID">Test Link</a>
編集:あなたが試したものを読み間違えていたため、問題が何であるかがわかりました。 id
html要素を渡すために間違ったオーバーロードを使用しています。おそらくnew { id="blah" }
paramをrouteValues
パラメーターに渡すことで、必要なhtmlAttributes
パラメーターではなく、ルートリンクの構築時に使用されます。
私はあなたが使用していると思う:
ActionLink(string linkText, string actionName, Object routeValues,
Object htmlAttributes)
あなたが使用する必要があるのは、私の答えで上でやったような次のオーバーロードです:
ActionLink(string linkText, string actionName, string controllerName,
Object routeValues, Object htmlAttributes)
これにより、new { id="blah" }
がhtmlAttributes
パラメーターに確実に渡されます。
これを試して:
<%: Html.ActionLink("Some View", "Index", "controller", null, new {id="something}")%>
基本的に、必要な署名を持つメソッドのオーバーロードがないため、エラーが発生します。
必要なものに最も近い署名は
public static string ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
Object routeValues,
Object htmlAttributes
)
Id属性をroutevalueに渡しているため、面白いhrefが提供されています。 routevalueにnullを渡し、html属性を追加します
これを試して
@Html.ActionLink("Forgot your access?", "RecoverPassword",
"Account", new { area = "registration-full.html" },
new { @class = "col-xs-6", id = "login-forget-link" })