2011-11-03 69 views
12

正如問題所述,是否可以使用包含元素的ActionLink,如果不是,實現它的最佳方式是什麼?是否可以使用包含元素的ActionLink?

例如,可以說我有一個Span元素,我想整個事情是一個超鏈接...以下工作:

<a href="/Site/Page/@Model.ID?Type=test"> 
       <span class="box5">Click anywhere in this box</span> </a> 

試想一下,跨度/ CSS類了Box5使這個大..最初是一個DIV,但是,我發現沒有遵循標準,這似乎遵循了。

這呈現和工作正常,但是,有反正使用ActionLink?我試圖猜測句法如(從表格複製):

@using (Html.Actionlink){<span class="box5">Click anywhere in this box</span>} 

和許多其他組合沒有任何運氣。

現在,我的手動HTML解決辦法正常工作,我很高興離開它,但是,是不是可以使用MVC ActionLink的,如果是,我應該甚至擔心/會不會有什麼好處?

回答

28

只需使用@Url.Action代替:

<a href="@Url.Action("Page","Site", new { id = Model.Id, @Type = "test" })"> 
<span class="box5">Click anywhere in this box</span> </a> 
+0

這是有用的,thx – Pyrejkee

1

你不能在actionlink中指定html標籤,但我可以建議你兩種解決方案: 1用你的函數擴展actionlink。所以你也可以實現動作鏈接生成href與其他htmal標記裏面(img或span在你的情況下)

2使用url.content在href中。這就像你的實際的解決辦法,但更好,因爲你用你已經在Global.asax中定義的,而不是用「神奇字符串」

5

有你可以用它來解決此限制

@Html.Raw(
    Html 
     .ActionLink("-replace-me-", .....) 
     .ToString() 
     .Replace(
       "-replace-me-", 
       @"<span class=""box5"">Click anywhere in this box</span>")) 

這是一個黑客規則不優雅,但它的工作

+1

使用Michael Stum的建議,但保留在後面的口袋裏,它可以在使用Ajax時派上用場.ActionLink – Jason

+0

+1肯定 - 我沒有'在得到答案之後,我想要編輯/重寫這個問題,但是,我已經決定我希望這些是Ajax鏈接,並且看起來像這個解決方案可以工作(在整個上午被卡住之後)...所以,+ 1/answer邁克爾,但也給你+1。 – Wil

+0

我不知道如果我做錯了,但它只是呈現爲文本......我猜剃鬚刀在幕後做它的事情。將它全部包含在@ Html.Raw()中似乎有訣竅......起初這看起來很混亂,但它太神奇了! – Wil

0

只寫<span> </span> 的d在跨度之間使用@html> ActionLink方法它會起作用

+0

我認爲原始的海報想要的方式只包括部分鏈接文本的跨度 - 換句話說,嵌套在而不是相反。 – bdesham

相關問題