Отправка URL / путей к действиям контроллера ASP.NET MVC - PullRequest
3 голосов
/ 11 ноября 2009

Исходя из различных источников, по-видимому, невозможно отправить такой путь "/Content/Scripts/jquery.js" в качестве параметра к действию MVC, поскольку косые черты используются в качестве разделителей параметров "/" и ASP.NET MVC возвращает 400 Ошибка.

Единственное работающее решение, которое я нашел до сих пор, состояло в том, чтобы Base64 кодировал такую ​​строку, отправлял ее как значение параметра и декодировал ее в действии контроллера. Я кодирую путь к файлу JS так:

http://localhost/vdir/Services/GetJavaScript/=L3JzaDIwMTAvQ29udGVudC9XaWRnZXRGcmFtZXdvcmsvd2lkZ2V0Lmpz/=aHR0cDovL2xvY2FsaG9zdA==

Мне это нужно, потому что я использую действия контроллера, которые возвращают JavaScriptResult для внедрения уменьшенного и модифицированного JavaScript в страницу, и я не хочу использовать обработчики http в этом случае.

Вопрос: действительно ли это единственный путь с ASP.NET MVC? Поскольку это не выглядит слишком удобно для пользователя, не так много пользователей будут смотреть источник страницы, но в любом случае ...;)

Ответы [ 4 ]

2 голосов
/ 09 декабря 2009

Подстановочный знак позволит вам передать путь в качестве переменной маршрута. См. Путь к файлу в качестве аргумента маршрута MVC

1 голос
/ 11 ноября 2009

Вы можете использовать «старомодный» подход строки запроса:

http://localhost/vdir/Services/GetJavaScript?script=/Content/Scripts/jquery.js

И пусть ваш метод GetJavaScript принимает строку с именем script:

public ActionResult GetJavaScript(string script)
1 голос
/ 11 ноября 2009

URL кодировать его. Должно получиться что-то вроде:

http://localhost/vdir/Services/GetJavaScript/%2FContent%2FScripts%2Fjquery.js

Если это не сработает, добавьте его в строку запроса:

http://localhost/vdir/Services/GetJavaScript?js=%2FContent%2FScripts%2Fjquery.js

HTHS,
Charles

0 голосов
/ 11 ноября 2009

Разве вы не можете просто заменить / другим символом, например |? Это все равно сделает URI чистым, но не помешает маршрутизации. Если все ваши скрипты находятся в одном каталоге, вы можете просто использовать его по умолчанию и удалить путь из ссылки, полностью исключив проблему.

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