【问题标题】:Routing issue when using URL.Action使用 URL.Action 时的路由问题
【发布时间】:2018-05-04 14:30:20
【问题描述】:

全部,

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

[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"))");
};

对这些东西和学习仍然很陌生,我相信这很简单。

当我运行这段代码时,我在控制台中得到以下信息

控制台输出

谢谢 jonpfl

【问题讨论】:

  • 您提供的代码有什么问题?说它“不工作”不是很有帮助
  • @RyanCarlisle 仍然没有任何意义。 Razor 永远不会从 HTML 中调用,HTML 是一种标记语言,它不起作用。所有 Razor 语法都在服务器上执行以生成 HTML,这与 jQuery 或 Ajax 无关。我认为您对 Razor 是什么有一些深刻的误解

标签: javascript c# asp.net-mvc


【解决方案1】:

如果你使用的是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 }))");

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

【讨论】:

  • 好的,上面的代码正在创建一个'/widgets/download-functions?publishedReportId=9999'的链接我想创建一个'/widgets/download-functions/9999'的链接我该怎么做完成那个?
猜你喜欢
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
相关资源
最近更新 更多