【发布时间】:2014-07-24 21:55:21
【问题描述】:
我偶尔会遇到 ActionLink 在我的应用程序中拒绝使用占位符创建正确的 URL,但是当我在 Route 属性上指定 Name 时,它会生成 URL 属性。
我最近一次接触这个,来自这个:
[RoutePrefix("RuleConfiguration")]
public class RuleConfigurationController : EntityController<RuleConfigurationModel, RuleConfiguration>
{
//...Snip...
[Route("{configurationId}/Edit", Name = "RuleConfigurationEdit")]
public async Task<ActionResult> Edit(int configurationId)
{
return View(...);
}
//...Snip...
}
鉴于此设置,我希望 ActionLink 在这样使用时:
@Html.ActionLink(name, "Edit", "RuleConfiguration", new { configurationId = conf.Id })
给我一个类似/RuleConfiguration/1/Edit 的网址。但是,我得到的只是/RuleConfiguration。像这样使用RouteLink 时:
@Html.RouteLink(conf.Name, "RuleConfigurationEdit", new { configurationId = conf.Id })
这会产生预期的 URL。在同一个视图中,我有一个ActionLink 生成指向另一个操作的链接,并且该链接使用预期的操作名称生成。不同之处在于,此其他操作没有任何路由参数。
我已经检查(多次)传递的参数ActionLink 拼写正确,并且 URL 参数与函数期望的匹配。将Name 参数添加到Route 以查看RouteLink 是否可以工作,ActionLink 在之前或之后没有按预期工作。
我是否缺少一些完全愚蠢的东西?
【问题讨论】:
标签: c# asp.net-mvc-5 asp.net-mvc-routing