Asp.net mvc 4 Html.ActionLink未填充href属性
路线定义:Asp.net mvc 4 Html.ActionLink未填充href属性,asp.net-mvc-4,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, view
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 }
);
详细控制器:
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>
所以在阅读了一些左右的文章之后(谢谢谷歌) 看来我的路线完全错了。所以我清理了我的整个路由表,现在我得到了更好的结果,它仍然不完美,但它可以被修复,这要感谢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的问题和答案,以解决该问题
感谢您的阅读和思考,希望这对其他人有所帮助您使用的是Razor语法,这也是您为视图选择的视图引擎吗?是的,我选择了Razor引擎,并且大部分情况下它都在工作。只是这个片段不想工作(actionlink)