Html.ActionLink没有填写href属性

时间:2014-01-22 08:43:56

标签: asp.net-mvc-4

路线定义:

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>

1 个答案:

答案 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上解决这个问题。

感谢阅读和思考,希望这有助于某人