Ответ 1
javascript
- это язык на стороне клиента, который ничего не знает о используемом вами языке на стороне сервера. Таким образом, это нормально, что в javascript помощника на стороне сервера нет эквивалента, который генерирует URL-адрес, используя определения маршрутов на стороне сервера.
Не совсем понятно, чего вы пытаетесь достичь, но если вы хотите использовать вызов некоторого URL-адреса через javascript, вы можете сгенерировать этот URL-адрес с помощью помощника на стороне сервера:
<script type="text/javascript">
var url = '@Url.Action("SomeAction", "SomeController")';
// do something with the url client side variable, for example redirect
window.location.href = url;
</script>
Если вы хотите использовать этот URL-адрес в отдельном файле javascript, где у вас нет доступа к помощникам на стороне сервера, вы все равно можете в зависимости от ситуации включить этот URL-адрес в некоторый элемент DOM.
Например:
<div id="foo" data-url="@Url.Action("SomeAction", "SomeController")">Click me</div>
Обратите внимание на атрибут data-url
HTML5, который мы встроили в DOM, и использовал вспомогательный сервер на стороне сервера, чтобы гарантировать, что сгенерированный URL всегда будет правильным на основе наших определений маршрутизации. Теперь мы можем в отдельном файле javascript незаметно подписаться на событие click этого div и получить URL-адрес:
$('#foo').click(function() {
var url = $(this).data('url');
// do something with the url client side variable, for example redirect
window.location.href = url;
});
Другие примеры, очевидно, включают стандартные элементы <a>
и <form>
, которые должны быть сгенерированы с использованием HTML-помощников на стороне сервера, а затем все, что вам нужно сделать в отдельном файле javascript, - это получить их соответствующие href
или action
атрибуты для получения фактического URL-адреса и сделать что-то с ним.