使用url片段创建T4MVC ActionLink

时间:2010-05-27 12:19:29

标签: asp.net-mvc t4mvc html.actionlink

有没有办法在其中创建一个带有哈希/磅/片段的强类型T4MVC ActionLink?

例如,这是我想要创建的链接:

<a href="/Home/Index#food">Feed me</a>

但是T4MVC对象没有扩展可以做到这一点。

<%= Html.ActionLink("Feed me", T4MVC.Home.Index()) %>

所以,我最终要做的是创建一个动作,然后以这种方式嵌入它:

<a href="<%= Url.Action(T4MVC.Home.Index()) %>"#food>Feed me</a>

这不是很理想。有人有什么想法/建议吗?

提前致谢

4 个答案:

答案 0 :(得分:9)

在ASP.NET MVC 2.0 new helpers have been added that allow you to specify the fragment中。例如:

<%= Html.ActionLink("Feed me", "Action", "Controller", null, null, "food", null, null) %>

答案 1 :(得分:8)

这种方法是我唯一能想到的方法(对我来说)比手动编写锚点要好一些:

${Html.ActionLink("Feed me", T4MVC.Home.Index(), Fragment: "food")}

除了火花视图引擎 - 它需要1个旧的htmlhelper扩展方法&amp;命名参数。


  

我认为这在默认的viewengine中不可用?我决定为ActionLink编写一个快速扩展,但它并不优雅,我希望在未来版本的T4MVC中可以使用任何解决方案。

Spark替换&lt;%=%&gt;与$ {}。提到只是因为我更喜欢它(如果你强调代码优雅,你应该尝试它)。需要C#4.0才能使用命名参数。

那是因为我想避免丢失参数“food”参数映射的信息。


是的,我非常赞同Mattias Jakobsson。

答案 2 :(得分:2)

更新:此重载包含在T4MVC 2.6.56

是的,为了完整起见,我们应该将其添加到T4MVC。它应该很容易做到,除非我们开始添加协议/主机名,否则我们最终会遇到很多重载。

如果我们停止支持Fx 3.5,情况会更容易,因为我们可以依赖默认/命名参数,这对减少过载地狱有很大帮助。但到目前为止,我一直在避免这一步,因为并非每个人都在使用4.0。

也许我应该将当前版本冻结为最后一个Fx 3.5 / MVC 1.x兼容,然后在新版本中仅支持Fx 4.0 / MVC 2(同时保持旧版本无限期)。无论如何,我离题了:))

答案 3 :(得分:1)

David Ebbo根据我在StackOverflow上制作的similar question将此功能添加到T4MVC。