路线定义:
context.MapRoute(
name: "VeranderingsTraject",
url: "Detail/{action}/{id}/{viewDate}/{toekomstBeeldId}",
defaults: new { controller = MVC.Detail.Name, action = MVC.Detail.ActionNames.VeranderingsTraject, viewDate = UrlParameter.Optional, toekomstBeeldId = UrlParameter.Optional },
namespaces: new[] { typeof(DetailController).Namespace }
);
DetailController:
public virtual ActionResult VeranderingsTraject(int id, DateTime? viewDate = null, int? toekomstBeeldId = null)
{ ... }
视野中的ActionLink:
当前视图实际上也来自DetailController,所以我认为我不需要控制器名称。由于它不起作用,我添加了它,但无济于事。
@Html.ActionLink(linkText:"TEST LINK", actionName: "VeranderingsTraject", controllerName: "Detail", routeValues: new {id= 1, viewDate = Model.VersieDatum}, htmlAttributes: null)
浏览器中的结果:
<a href="">
TEST LINK
</a>
预期结果:
<a href="/Detail/VeranderingsTraject/1/{date, i need to encode the url i know)/">
TEST LINK
</a>
答案 0 :(得分:1)
所以经过一些左右阅读(谢谢谷歌)
似乎我的路由完全错了。所以我清理了我的整个路由表,现在我得到了更好的结果,它仍然不完美,但它可以修复,这要归功于stackoverflow上其他ActionLink相关问题的答案
我在细节控制器上有大约10个动作给出相同的视图(不同对象之间的共享信息)我曾经为每个对象设置路由,因此无法确定正确的路径。
现在所有10条路线都在这个路线上:
context.MapRoute(
name: "Detail",
url: "Detail/{action}/{id}/{viewDate}/{toekomstBeeldId}",
defaults: new { controller = MVC.Detail.Name, action = MVC.Detail.ActionNames.Persoon, viewDate = UrlParameter.Optional, toekomstBeeldId = UrlParameter.Optional },
namespaces: new[] { typeof(DetailController).Namespace }
)
生成的链接现在如下:
<a href="/Atlas/Detail/persoon?id=14&requestDate=01%2F22%2F2014%2000%3A00%3A00"></a>
所以我只需要更好地格式化那个日期,然后读取更改/ persoon?id = ...到/ persoon / 14 / 01-22-2014 /但我看到了一些问题和答案在stackoverflow上解决这个问题。
感谢阅读和思考,希望这有助于某人