0
<li class="rtsLI" id="Summary"><a href="javascript:void(0);" onclick="javascript:rtsXXX.OnClientTabSelected(this‌​, 0);" class="rtsLink"><span class="rtsTxt">Test</span></a></li> 

上記では、次のアクションリンクに置き換えています。

<li class="rtsLI" >@Html.ActionLink("test1", "Index", new { Area = "Area1", Controller = "controller1" }, new { @class = "rtsLink rtsTxt"})</li> "

最初はcssは正常に機能しています。しかし、Actionlink を使用すると、css が機能しません。ありがとう

4

3 に答える 3

2

標準の ActionLink ヘルパーは、常にリンク テキストを HTML エンコードします。これは、内部で HTML をレンダリングする場合は使用できないことを意味します。3 つの可能性があります。

  1. リンク内にスパンが不要になるように CSS を変更し、rtsTxtクラスをリンクに直接適用できるようにします。
  2. テキストを HTML エンコードせず、同じマークアップを生成できるカスタム ActionLink ヘルパーを作成します。

    public static class ActionLinkExtensions
    {
        public static IHtmlString ActionLinkUnencoded(
            this HtmlHelper htmlHelper, 
            string linkText, 
            string actionName, 
            object routeValues, 
            object htmlAttributes
        )
        {
            var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
            var link = new TagBuilder("a");
            link.MergeAttributes(new RouteValueDictionary(htmlAttributes));
            link.Attributes["href"] = urlHelper.Action(actionName, routeValues);
            link.InnerHtml = linkText;
            return new HtmlString(link.ToString());
        }
    }
    

    その後:

    <li>
        @Html.ActionLinkUnencoded(
            "<span class=\"rtsTxt\">User Security</span>", 
            "index", 
            new { area = "Tools", controller = "UserSecurity" }, 
            new { @class = "rtsLink" }
        )
    </li>
    
  3. Url.Action ヘルパーを使用します。

    <li class="rtsLI">
        <a href="@Url.Action("index", new { area = "Tools", controller = "UserSecurity" })" class="rtsLink">
            <span class="rtsTxt">User Security</span>
        </a>
    </li>
    
于 2012-08-31T07:32:18.617 に答える
0

次のようにコードを記述します。

<li class="rtsLI" >@Html.ActionLink("<span class='rtsTxt'>User Security</span>", "Index", new { Area = "Tools", Controller = "UserSecurity" }, new { @class = "rtsLink"})</li>`
于 2012-08-31T07:04:33.870 に答える
0

最良のオプションは、@Url.Action拡張メソッドを使用することです

<li class="rtsLI" id="Summary"><a href="@Url.Action("Index", new { Area = "Tools", Controller = "UserSecurity" })" class="rtsLink"><span class="rtsTxt">User Security</span></a></li>
于 2012-08-31T07:32:39.147 に答える