Это часть давней проблемы, заключающейся в том, что включение серверного кода в файлы JavaScript не представляется возможным :(. (Без серьезных взломов, то есть.)
Лучшее решение - включить URL-адрес действия в ваш HTML-файл, а затем получить это значение из JavaScript. Мое предложение будет примерно таким:
<!-- in your view file -->
<form id="MyForm" action="<%: Url.Action("MyAction") %>"> ... </form>
<!-- or -->
<a id="MyLink" href="<%: Url.Action("MyAction") %>"> ... </a>
в сочетании с
// In your .js file
$("#MyForm").submit(function ()
{
$.post($(this).attr("action"), data, function (result) { /* ... */ });
return false;
});
// or
$("#MyLink").click(function ()
{
$.getJSON($(this).attr("href"), data, function (result) { /* ... */ });
return false;
});
Мне это кажется семантически понятным, а в некоторых случаях даже создает ухудшающееся аварийное поведение при отключении JavaScript.