Относительный URL внутри $ ajax с asp.net mvc 3 - PullRequest
6 голосов
/ 20 декабря 2011

Я знаю, что эту функцию можно использовать

@Url.Action("MyInfo", "Home")

, чтобы избежать жесткого кодирования URL-адресов, но мои $.ajax вызовы находятся в отдельном файле .js.Выше все еще будет работать?

Насколько мне известно, @Url.Action будет работать только внутри файла Razor.Но, учитывая, что нам рекомендуется использовать ненавязчивый JS, я не совсем уверен, как бы я использовал @Url.Action.

Пожалуйста, сообщите.

Ответы [ 2 ]

12 голосов
/ 20 декабря 2011

Будет ли вышеописанное работать?

номер

Насколько мне известно, действие @ Url.Action будет работать только внутри файла Razor

Ваши знания верны.

Но учитывая, что нам рекомендуется использовать ненавязчивый JS, я не совершенно уверен, как бы я использовал действие @ Url.Action.

Вы можете использовать атрибуты HTML5 data- * для некоторого элемента DOM, который вы незаметно расширяете (если этот элемент уже не является <form> или якорем, в этом случае он уже содержит URL):

<div id="foo" data-url="@Url.Action("foo")">Hello</div>

и затем в вашем отдельном файле JavaScript:

$(function() {
    $('#foo').click(function() {
        var url = $(this).data('url');
        // TODO: do something with the url
    });
});
4 голосов
/ 20 декабря 2011

Добавить параметр функции для относительных путей. Например, по вашему мнению:

<script type="text/javascript">
   var path =  "@Url.Action("ActionName", "ControllerName")";

   someAjaxMethod(path)
</script>

и в вашем внешнем файле js:

function someAjaxMethod(path)
{
   var data = {};
   $.ajax(path, data)
}
...