2012-02-09 44 views
2

當我使用這個輔助方法來創建一個鏈接,該數據屬性在HTML代碼中正確顯示出來:MVC3怪異的行爲屬性

@Html.ActionLink("Test", "Index", null, new { data_something = "123" }) 

的HTML是正確的:

<a data-something="123" href="/">Test</a> 

當我使用ActionLink方法的以下過載(I使用T4MVC腳本,http://mvccontrib.codeplex.com/wikipage?title=T4MVC),數據屬性包含下劃線的,而不是一個破折號:

@Html.ActionLink("Test", MVC.Home.Index(), new { data_something = "123" }) 

的HTML是不正確的:

<a data_something="123" href="/">Test</a> 

這是一個知道是不是BUG或功能?我搜索了bugtracker(http://aspnet.codeplex.com/workitem/list/basic),但無法找到相應的問題。

以下過載重新工作,但我不喜歡創造Dictonaries所有的時間:

@Html.ActionLink("Test", MVC.Home.Index(), new Dictionary<string, object> { 
     { "data-something", "123" } 
    }) 
+0

似乎是T4MVC模板的問題:補丁已存在:http:// mvccontr ib.codeplex.com/SourceControl/network/Forks/chebureg/T4MVCupdate/contribution/1538# – Daniel 2012-02-09 14:49:30

回答

0

的數據屬性使用@data_something="123"

@Html.ActionLink("Test link", 
        MVC.Home.Index(), 
        new {controller="Home"}},new {@data_something="123"}) 

上面的代碼應該輸出

<a href="/Home/Index/" data-something="123">Test Link></a> 
+0

謝謝,但這只是另一種解決方法。爲什麼在ActionLink的各種重載中htmlAttributes的處理方式不同? – Daniel 2012-02-09 09:52:01

+0

@丹尼爾是的,這是一個解決方法,因爲它看起來像'-'已被保留,所以你必須使用'_'而不是 – Rafay 2012-02-09 09:54:35

+0

我不喜歡使用解決方法。我想我會打開一張票。 – Daniel 2012-02-09 10:51:08