Razor@Url.Action随可选id参数返回到javascript变量

Razor@Url.Action随可选id参数返回到javascript变量,javascript,.net,asp.net-mvc-4,Javascript,.net,Asp.net Mvc 4,如果用户当前在参数引用的控制器和操作中,@Url.Action方法是否打算返回当前Url 我有一个简单的控制器设置 OrderableTest/Details/Id ResultableTest/Details/Id 如果我从主控制器(主/索引)或从结果表/Details调用@Url.Action(“详细信息”,“医嘱内容”),我将获得保存到javascript变量(“/Orderable/Details”)的正确Url。但是,如果我在一个详细信息页面上,那么该id将包含在url中。例如,我在

如果用户当前在参数引用的控制器和操作中,@Url.Action方法是否打算返回当前Url

我有一个简单的控制器设置

OrderableTest/Details/Id
ResultableTest/Details/Id
如果我从主控制器
(主/索引)
或从
结果表/Details
调用
@Url.Action(“详细信息”,“医嘱内容”)
,我将获得保存到javascript变量
(“/Orderable/Details”)的正确Url
。但是,如果我在一个详细信息页面上,那么该id将包含在url中。例如,我在页面
Orderable/Details/12345
,我调用
@Url.Action(“Details”,“Orderable”)
,而不是获取
“/Orderable/Details”
我获取
”/Orderable/Details/12345“
。这是预期的功能吗

路由映射是默认的

按要求使用Javascript:

var orderableDetailUrl = '@Url.Action("Details", "Orderable")';
var resultableDetailUrl = '@Url.Action("Details", "Resultable")';
alert(orderableDetailUrl);
alert(resultableDetailUrl);

正如@JotaBe在上面的评论中提到的,UrlHelper使用上下文信息。因此,为您当前所在页面调用的@Url.Action也将包括可选的id/参数

为了避免这种情况,您可以将一个空白的可选参数传递给该方法。对于我上面的问题,用以下代码解决了

var resultableDetailUrl = '@Url.Action("Details", "Resultable", new { id = "" })';
var orderableDetailUrl = '@Url.Action("Details", "Orderable", new { id = "" })';

无论用户当前在哪个页面上,这两种方法都将正确返回/Orderable/Details/和/Resultable/Details/。

如果您显示javascript并描述您想要实现的目标会有所帮助。我从未遇到过这种行为,您确定按预期使用它吗?UrlHelper方法使用上下文信息,与当前页面路由数据一样,创建URL。所以,是的,这是有意的行为。正如迪米特里所说,所以我们需要你的代码。非常好!这对我帮助很大