У меня есть проект asp.net mvc с knockout.js, поэтому моя индексная страница становится действительно огромной из-за множества функций javascript. Мне бы хотелось переместить js-код в отдельный файл, но он не позволяет мне применить его к большей части кода, потому что, если у меня есть что-то вроде
$.ajax({
url: "@Html.Raw(@Url.Action("Load"))",
Затем появляется сообщение об ошибке, если я переместю эту часть кода в другой файл. Пожалуйста, сообщите, как я могу решить эту проблему?
Файлы Javascript не обрабатываются ASP.net, поэтому переменные, которые у вас есть @Html.Raw и @Url.Action("Загрузка"), никогда не будут обработаны.
Файлы Javascript не обрабатываются ASP.NET MVC, поэтому @Html.Raw(@Url.Action("Load"))
не будет работать в файле javascript.
Херес обходной путь
Вместо этого объявите переменную в view.cshtml
. В разделе сценария как
<script type="text/javascript">
var actionUrl = '@Url.Action("Load", "Controller")';
</script>
И используйте actionUrl
в файле javascript.
Как отметил @James Lai, серверный код сервера не анализируется как таковой ASP.Net. См. Этот пост для обхода, или вы можете выбрать, какие сценарии могут оставаться на странице (с кодом на стороне сервера), а не "все" - ваш выбор относительно того, какой подход соответствует вашим требованиям.