是否可以使用包含元素的ActionLink?

时间:2011-11-03 06:10:24

标签: c# asp.net-mvc-3 syntax razor actionlink

正如问题所说,是否可以使用包含元素的ActionLink,如果没有,实现它的最佳方法是什么?

例如,假设我有一个Span元素,我希望整个事情都是一个超链接......以下是有效的:

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

想象一下,span / css类box5使这个大...原来是一个DIV,但是,我发现它没有遵循标准,这似乎跟着好。

这呈现并且工作正常,但是,无论如何使用ActionLink代替?我试图猜测语法,如(从表格中复制):

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

和许多其他组合没有任何运气。

现在,我的手动HTML解决方法运行正常,我很高兴离开它,但是,是否可以使用MVC ActionLink,如果是,我是否应该担心/会有任何好处吗?

5 个答案:

答案 0 :(得分: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>

答案 1 :(得分:5)

您可以使用黑客来解决限制

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

它并不优雅,但它可以完成工作

答案 2 :(得分:1)

Html.ActionLink只是HtmlHelper对象的普通Extension Method

您也可以创建自己的custom extension methods for HtmlHelper,这样做非常简单,可以节省大量时间。

答案 3 :(得分:1)

您无法在actionlink中指定html标记,但我可以为您推荐两种解决方案: 1使用您的函数扩展actionlink。所以你也可以实现在其中生成href与其他htmal标签的动作链接(img或span就像你的情况一样)

2使用href中的url.content。这就像你的实际解决方法,但更好,因为你使用你在global.asax中定义的规则,而不是使用“魔术字符串”

答案 4 :(得分:0)

只需撰写<span> </span> 并且在跨度之间使用@html&gt; ActionLink方法它将起作用