2012-02-28 99 views
1

我創建了一個結合創建Html.ActionLink HTML幫助像這樣的工作正常標籤:重載火花視圖引擎綁定

<element name="actionlink"> 
    Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}}) 
</element> 

使用像<actionlink action="index" route-controller="users" route-id="${Model.Id}"/>的塔格用正確href屬性作爲正確創建錨標記我會期待的。

然而,我又試圖超載這個標籤的綁定,所以我可以添加HTML屬性,如ID,類等,像這樣:

<element name="actionlink"> 
    Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}}, new Dictionary[[string,object]]{{"@*"}}) 
</element> 

你會發現它被傳遞到外卡最後一個Dictionary參數,它是HtmlHelper的html屬性參數。然而,當我使用ActionLink的標籤以下列方式:

<actionlink action="index" route-controller="users" route-id="${Model.Id}" id="linkId" class="className"/> 

它創建相同的標記如上使用,即它不包括idclass HTML屬性。我在這裏做一些根本性的錯誤嗎?任何人都可以看到什麼是不正確的?

回答

1

當使用綁定時,您必須注意的是,綁定按照它們聲明的順序進行匹配,所以如果您按上面指定的順序聲明綁定,則第二個綁定永遠不會匹配。

如果切換綁定下面的順序,那麼它應該工作:

<!-- most specific binding first --> 
<element name="actionlink"> 
    Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}}, new Dictionary[[string,object]]{{"@*"}}) 
</element> 
<element name="actionlink"> 
    Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}}) 
</element> 

此外,使用你需要知道,直到你重建您的解決方案的變化沒有得到拾起綁定時,所以如果你正在做出改變,他們可能是對的,但它可能看起來不像他們正在拾起,因爲你還沒有重建。

+0

好的,謝謝你,我在假設它選擇'最好的工作',以同樣的方式重載c#方法,瘋狂地說,簡單地交換綁定的順序解決了問題! – jcvandan 2012-03-01 10:38:34

+0

是的它不完全相同的工作,我被燒了一次或兩次。另外,對於這個特定的標籤,你可以完全擺脫第二個綁定,因爲如果沒有額外的參數,它將只傳遞一個新的Dictionary [[string,object]] {{「* *」}}參數的空對象元素。 – lomaxx 2012-03-01 10:52:58

+0

有趣的是,這是我發佈這個問題後,我實際上最終做了什麼,我沒有回答自己,因爲我仍然想知道爲什麼它不工作,thx再次 – jcvandan 2012-03-02 13:40:34