Правильный способ работы с этими URL MVC в Javascript - PullRequest
0 голосов
/ 22 ноября 2011

Мне нужно предоставить URL в качестве аргумента в JavaScript. Это необходимо, потому что у меня есть метод на общей странице, который используется несколькими другими страницами, но метод должен вызывать разные URL в зависимости от исходной страницы.

Если я попытаюсь сделать это таким образом, при загрузке страницы будет вызван URL, который НЕ нужен:

myMethod('@Url.Action("myMethod", "myController")');

function myMethod(myURL) {
    window.open(myURL + arguments);
} 

Если я попробую это так, слова «метод» и «контроллер» будут подчеркнуты, и страница не будет загружена:

myMethod("myMethod", "myController");

function myMethod(method, controller) {
    window.open("@Url.Action(method, controller)" + arguments);
} 

1 Ответ

4 голосов
/ 22 ноября 2011

Вы, кажется, смешиваете здесь JavaScript и серверный код.Одной из возможностей будет иметь либо глобальную переменную javascript в представлении, которая будет указывать на URL, либо использовать атрибуты data- * HTML5 в некотором элементе DOM.Например, внутри представления вы можете определить невидимый тег span, который будет содержать URL:

<span id="url" data-url="@Url.Action("myAction", "myController")"></span>

, а затем в вашем отдельном файле javascript при вызове метода:

$(function() {
    var url = $('#url').data('url');
    myMethod(url);
});

.конечно, измените вашу глобальную функцию javascript так, чтобы она принимала непосредственно URL, а не действие и контроллер:

function myMethod(method, controller) {
    window.open(url + arguments);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...