使用url片段创建T4MVC ActionLink

Dan*_*son 10 asp.net-mvc t4mvc html.actionlink

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

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

<a href="/Home/Index#food">Feed me</a>
Run Code Online (Sandbox Code Playgroud)

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

<%= Html.ActionLink("Feed me", T4MVC.Home.Index()) %>
Run Code Online (Sandbox Code Playgroud)

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

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

这不是很理想.任何人有任何想法/建议?

提前致谢

Dar*_*rov 9

在ASP.NET MVC 2.0中添加了新的助手,允许您指定片段.例:

<%= Html.ActionLink("Feed me", "Action", "Controller", null, null, "food", null, null) %>
Run Code Online (Sandbox Code Playgroud)

  • 这在MVC v1中已经可用,但在T4MVC中没有添加.我使用T4MVC的主要原因是为了摆脱示例中出现的魔术字符串. (4认同)

Arn*_*psa 8

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

${Html.ActionLink("Feed me", T4MVC.Home.Index(), Fragment: "food")}
Run Code Online (Sandbox Code Playgroud)

除了spark viewengine - 它需要1个旧的htmlhelper扩展方法和命名参数.


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

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

那是因为我想避免丢失参数"food"参数映射的信息.


是的,我非常赞同Mattias Jakobsson.