175

2 つの質問があります。

  1. MVCビューで使用するときにリンクテキストを表示しない方法をHtml.ActionLink()考えています(実際、これはですSite.Master)。

リンクテキストを許可しないオーバーロードされたバージョンはありません。空白だけを渡そうとするとstring、コンパイラは空でない文字列が必要だと教えてくれます。

どうすればこれを修正できますか?

  1. <span>アンカー タグ内にタグを配置する必要がありますが、 Html.ActionLink();. 次の出力を確認したいと思います。

    スパンテキスト

ASP.NET MVC のアンカー タグ内にタグを配置するにはどうすればよいですか?

4

12 に答える 12

340

Html.ActionLink を使用する代わりに、Url.Action を介して URL をレンダリングできます。

<a href="<%= Url.Action("Index", "Home") %>"><span>Text</span></a>
<a href="@Url.Action("Index", "Home")"><span>Text</span></a>

そして、あなたが持つことができる空のURLを行うには

<a href="<%= Url.Action("Index", "Home") %>"></a>
<a href="@Url.Action("Index", "Home")"></a>
于 2009-12-29T14:49:31.890 に答える
16

別のオプションとして、カスタム HtmlHelper 拡張機能があります。 :ParameterDictionaryは私自身のタイプです。RouteValueDictionary を代用できますが、別の方法で構築する必要があります。

public static string ActionLinkSpan( this HtmlHelper helper, string linkText, string actionName, string controllerName, object htmlAttributes )
{
    TagBuilder spanBuilder = new TagBuilder( "span" );
    spanBuilder.InnerHtml = linkText;

    return BuildNestedAnchor( spanBuilder.ToString(), string.Format( "/{0}/{1}", controllerName, actionName ), htmlAttributes );
}

private static string BuildNestedAnchor( string innerHtml, string url, object htmlAttributes )
{
    TagBuilder anchorBuilder = new TagBuilder( "a" );
    anchorBuilder.Attributes.Add( "href", url );
    anchorBuilder.MergeAttributes( new ParameterDictionary( htmlAttributes ) );
    anchorBuilder.InnerHtml = innerHtml;

    return anchorBuilder.ToString();
}
于 2009-12-29T15:04:14.667 に答える
14

ajax を使用する必要がある場合や、(タグを使用して) 手動でリンクを作成するときに使用できない機能を使用する必要がある場合の回避策を次に示します。

<%= Html.ActionLink("LinkTextToken", "ActionName", "ControllerName").ToHtmlString().Replace("LinkTextToken", "Refresh <span class='large sprite refresh'></span>")%>

「LinkTextToken」の代わりに任意のテキストを使用できます。これは置換するためだけに存在し、actionlink 内の他の場所に出現しないことだけが重要です。

于 2012-06-06T11:38:54.230 に答える
13

Url.Actionの代わりに使用してHtml.ActionLinkください:

<li id="home_nav"><a href="<%= Url.Action("ActionName") %>"><span>Span text</span></a></li>
于 2009-12-29T14:48:53.310 に答える
7

これは常に私にとってうまくいきました。ごちゃごちゃせず、とてもきれいです。

<a href="@Url.Action("Index", "Home")"><span>Text</span></a>

于 2015-04-07T15:23:26.107 に答える
0

ブートストラップ コンポーネントを使用した私のソリューション:

<a class="btn btn-primary" href="@Url.Action("resetpassword", "Account")">
    <span class="glyphicon glyphicon-user"></span> Reset Password
</a>
于 2015-08-26T16:59:48.217 に答える
0

とても簡単です。

グリフアイコンのようなものが欲しい場合は「ウィッシュリスト」、

<span class="glyphicon-heart"></span> @Html.ActionLink("Wish List (0)", "Index", "Home")
于 2014-05-21T11:23:58.373 に答える
0

以下のコードをお試しください。

 @Html.ActionLink(" SignIn", "Login", "Account", routeValues: null, htmlAttributes: new {  id = "loginLink" ,**@class="glyphicon glyphicon-log-in"** }) 
于 2015-03-14T21:42:57.247 に答える