Используйте файл Seprate js и используйте помощники Url в нем с ASP.NEt MVC 3 и Razor View Engine - программирование
Подтвердить что ты не робот

Используйте файл Seprate js и используйте помощники Url в нем с ASP.NEt MVC 3 и Razor View Engine

Я задаю аналогичный вопрос здесь и Darin Dimitrov ответ, что мы не можем использовать помощник Url, например $.ajax({ url: '@Url.Action("Index")', . . ., в отдельном файле js, так что вы предлагаете используйте Url helper на странице просмотра и передайте его в javascript, я не хочу использовать URL-адрес жесткого кода, мне нужно найти его с помощью помощника Url.?

4b9b3361

Ответ 1

Используйте скрытое поле для хранения своего URL-адреса, затем используйте javascript для чтения скрытого поля, а затем используйте его в своем коде. Таким образом, вы можете сохранить JS файл отдельно от представления. Что-то вроде этого:

//In Your View
    @Html.Hidden("MyURL", Url.Action("Index"))

//In Your JS
    var myUrl = $("#MyURL").val();

    $.ajax({ url: myUrl , . . .

Ответ 2

Самый простой способ - просто создать глобальную переменную, называемую чем-то, и просто ссылаться на нее в вашем внешнем JS

var baseURL = '@Url.Action("Index")';

Внутри вашего внешнего JS

$.ajax({ url: baseURL + "Action"

Ответ 3

Вы можете использовать RazorJS для этой цели. Это позволяет писать Razor-Style С# или VB.NET внутри ваших файлов JavaScript. Существует краткое описание здесь.

Ответ 4

Нет необходимости иметь скрытое поле, даже это работает также во внешнем файле .js.

var myUrl =/имя_контроллера/имя_пользователя;

$.ajax({ url: myUrl , . . 

Ответ 5

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

Ответ 6

Я использовал аналогичный подход к raklos, но искал, чтобы получить корневой путь каталога во всех местах, поэтому я пошел с кодом ниже.

@Html.Hidden("AppUrl", Url.Content("~"))