簡體   English   中英

在MVC3和Html.ActionLink中使用HTML5“data-”屬性<TController>

[英]Using HTML5 “data-” attributes with MVC3 and Html.ActionLink<TController>

因此, Html.ActionLink()的非泛型重載似乎可以很好地與HTML5 data-屬性配合使用,通過將帶下划線的屬性重命名為帶連字符的屬性:

如何在ASP.NET MVC中的HTML-5 data- *屬性中使用破折號

但是,這似乎不適用於強類型的Html.ActionLink<TController>()

所以,JQuery Mobile的鏈接

@(Html.ActionLink<HomeController>(
     c => c.Index(), 
     "Home",  
      new { data_direction="reverse" } ))

給出了一個HTML源代碼

<a data_direction="reverse" href="/" class="ui-link">Home</a>

這不是我想要的。

有任何想法嗎? 沒有帶有RouteValueDictionary重載,因此路由已經完成。

所以似乎HtmlHelper.ActionLink<TController>上的Microsoft.Web.Mvc擴展方法中存在一個錯誤(功能?)。 我的解決方法是:

using System;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;
using Authentication;

public static class LinkExtensions
{

    // Named thusly to avoid conflict, I anticipate a search-and-replace later!
    public static MvcHtmlString ActionLink5<TController>(this HtmlHelper helper, Expression<Action<TController>> action, string linkText, object htmlAttributes) where TController : Controller
    {
        RouteValueDictionary routeValuesFromExpression = Microsoft.Web.Mvc.Internal.ExpressionHelper.GetRouteValuesFromExpression<TController>(action);
        return helper.RouteLink(linkText, routeValuesFromExpression, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
    }
}

當被召喚時

@(Html.ActionLink5<HomeController>(
    c => c.Index(), 
    "Home",  
    new { data_direction="reverse" } ))

似乎工作得很好......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM