Используйте отдельный файл js и используйте в нем URL-помощники с ASP.NEt MVC 3 и Razor View Engine
Я задаю подобный вопрос здесь и Darin Dimitrov
ответ, что мы не можем использовать URL-помощник, как $.ajax({ url: '@Url.Action("Index")', . . .
в отдельном файле js, так что вы предлагаете использовать помощник Url на странице просмотра и передать его в javascript, я не хочу использовать URL-адрес жесткого кода, мне нужно найти его с помощью помощника Url.?
6 ответов
Используйте скрытое поле для хранения вашего URL, затем используйте JavaScript, чтобы прочитать скрытое поле, а затем используйте это в своем коде. Таким образом, вы можете сохранить файл JS отдельно от представления. Что-то вроде этого:
//In Your View
@Html.Hidden("MyURL", Url.Action("Index"))
//In Your JS
var myUrl = $("#MyURL").val();
$.ajax({ url: myUrl , . . .
Самый простой способ - просто создать глобальную переменную, называемую чем-то, и просто сослаться на нее во внешнем JS
var baseURL = '@Url.Action("Index")';
Внутри вашего внешнего JS
$.ajax({ url: baseURL + "Action"
Нет необходимости иметь скрытое поле, даже это работает и во внешнем файле.js.
var myUrl = / ControllerName / ActionName;
$.ajax({ url: myUrl , . .
Я использовал аналогичный подход к raklos, но искал путь к корневому каталогу во всех местах, поэтому я пошел с кодом ниже.
@Html.Hidden("AppUrl", Url.Content("~"))
Посмотрите на Генерацию внешних файлов JavaScript с использованием частичных видов бритвы. В этой записи блога я опишу, как вы можете использовать обычные представления Razor и пользовательский фильтр действий для рендеринга внешних файлов JavaScript, в которых может быть код Razor.