使用URL.Action时的路由问题

时间:2018-05-04 14:30:20

标签: javascript c# asp.net-mvc

所有

我在控制器上定义了以下路径/操作:

[RoutePrefix("widgets/download-functions")]

[Route("download/{publishedReportId}"), HttpGet]
public ActionResult Download(int publishedReportId)

在我的js代码中,我想用适当的id创建一些路由。

这就是我在js代码中的内容(不起作用)。我错过了什么?

self.downloadFile = function (data) {
    console.log(data);
    console.log("@(Url.Action("Download", new { publishedReportId = 9999 }))");
    console.log("@(Url.Action("Download"))");
};

对于这些东西和学习还是新手,我相信这很简单。

当我运行此代码时,我在控制台中获得以下内容

控制台输出

enter image description here

THX jonpfl

1 个答案:

答案 0 :(得分:0)

如果你正在使用Url.Action,它没有利用属性路由,你需要遵循原来的路由方法,即使用,Action,Controller,area和params来获取扩展名制作网址的方法。

[RoutePrefix("widgets/download-functions")]
public class WidgetDownloadController : Controller

...

[Route("download/{publishedReportId}"), HttpGet]
public ActionResult Download(int publishedReportId)

你会得到一个Url.Action,如:

console.log("@(Url.Action("Download","WidgetDownload", new { publishedReportId = 9999 }))");

此外,这仅适用于由剃刀引擎解析的脚本,即。直接在视图中编写的脚本。