2

残念ながら、私はこのトピックの研究に成功しませんでした。アンカータグを使用して、これを行うことができました。

<a href="..."> My Link &reg </a>

今私はHtml.Actionlinkで同じものが欲しいです:

@Html.ActionLink("My Link &reg", "Action")

ただし、出力は入力と同じであり、意図したとおりのregシンボルではありません。何か案が?

前もって感謝します!

4

4 に答える 4

2
@Html.ActionLink("My Link ®", "Action")

また

<a href="@Url.Action("Action")"> My Link &reg </a>
于 2012-07-16T09:30:15.293 に答える
1

HtmlString.NET 2 / MVC 2MvcHtmlStringでは)を使用して、再エンコードしたくないことを示すことができます。

@Html.ActionLink(new HtmlString("My Link &reg"), "Action");
于 2012-07-16T09:59:49.610 に答える
1

MVC 2でこれを解決した方法は次のとおりです。

/// <summary>
/// Creates an anchor tag based on the passed in controller type and method.
/// Does NOT encode passed in link text.
/// </summary>
/// <typeparam name="TController">The controller type</typeparam>
/// <param name="htmlHelper">The HTML helper</param>
/// <param name="action">The method to route to</param>
/// <param name="linkText">The linked text to appear on the page</param>
/// <returns>A formatted anchor tag</returns>
public static MvcHtmlString ActionLink<TController>( this HtmlHelper htmlHelper,
                                                     Expression<Action<TController>> action,
                                                     HtmlString linkText ) where TController : Controller
{
    return ActionLink( htmlHelper, action, linkText, null, null );
}

/// <summary>
/// Creates an anchor tag based on the passed in controller type and method.
/// Does NOT encode passed in link text.
/// </summary>
/// <typeparam name="TController">The controller type</typeparam>
/// <param name="htmlHelper">The HTML helper</param>
/// <param name="action">The method to route to</param>
/// <param name="linkText">The linked text to appear on the page</param>
/// <param name="routeValues">The route values</param>
/// <param name="htmlAttributes">The HTML attributes</param>
/// <returns>A formatted anchor tag</returns>
public static MvcHtmlString ActionLink<TController>( this HtmlHelper htmlHelper,
                                                     Expression<Action<TController>> action,
                                                     HtmlString linkText,
                                                     object routeValues,
                                                     object htmlAttributes ) where TController : Controller
{
    var routingValues = GetRouteValuesFromExpression( action, routeValues );

    var url = UrlHelper.GenerateUrl( null, //routeName
                                     null, //actionName
                                     null, //controllerName
                                     routingValues,
                                     htmlHelper.RouteCollection,
                                     htmlHelper.ViewContext.RequestContext,
                                     false ); //includeImplicitMvcValues

    var tagBuilder = new TagBuilder("a")
        { 
            InnerHtml = !String.IsNullOrEmpty( linkText.ToString() ) ? linkText.ToString() : String.Empty
        };

    tagBuilder.MergeAttributes( (IDictionary<string, object>)htmlAttributes );
    tagBuilder.MergeAttribute( "href", url );

    return MvcHtmlString.Create( tagBuilder.ToString( TagRenderMode.Normal ) );
}

MVC futures NuGet パッケージのように、強く型付けされています。したがって、次のように使用できます。

<%= Html.ActionLink<HomeController>( x => x.Index(),
                                     new HtmlString( "Don't Encode Me!<sup>&reg;</sup>" ) ) %>
于 2013-01-23T20:12:13.210 に答える
1

ActionLink は常に、リンク テキストに HttpUtility.Encode の呼び出しを使用します。

次のように UrlHelper メソッドを使用できます

<a href="@Url.Action("Action")">My Link &reg</a>
于 2012-07-16T09:31:10.513 に答える