Проблема с маршрутизацией при использовании URL.Action - PullRequest
0 голосов
/ 04 мая 2018

All

На моем контроллере определен следующий маршрут / действие:

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

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

И внутри моего js-кода я хочу создать некоторую маршрутизацию с соответствующим идентификатором.

Это то, что у меня есть внутри моего кода 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 голосов
/ 04 мая 2018

Если вы используете Url.Action, он не использует преимущества маршрутизации атрибутов, вам нужно будет следовать оригинальному методу маршрутизации, который заключается в использовании Action, Controller, area и params, чтобы получить метод расширения для произвести URL.

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

Кроме того, это будет работать только для сценариев, которые обрабатываются механизмом бритвы, т.е. скрипты, которые написаны прямо в представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...