#javascript #ajax #asp.net-mvc-4
#javascript #ajax #asp.net-mvc-4
Вопрос:
У меня есть тестовое представление, которое выполняет вызов ajax для тестового контроллера. Проблема, с которой я сталкиваюсь, заключается в доступе к переменным для отправки на контроллер. Вот мой код:
$.ajax({
type: "GET",
url: "@Url.Action("Copy", "Test")",
data: { folderName: @ViewBag.SampleProjectName },
success: function (returnData) {
if (!returnData) {
return;
}
},
error: function () {
return;
}
});
Выполнение этого кода приводит к ошибке времени выполнения, указывающей, что «Обработка файлов» не определена.
Я считаю, что происходит то, что значение не передается в виде строки
Я говорю это, потому что, если я жестко запрограммирую значение в виде строки, оно сработает:
data: { folderName: "FileHandling" },
Как я могу получить доступ к параметру строки запроса или свойству ViewBag для передачи в качестве folderName?
Комментарии:
1. Расставьте метки
@ViewBag.SampleProjectName
запроса, как вы делали с"@Url.Action("Copy", "Test")"
2. Пожалуйста, добавьте к тегам MVC-фреймворк, который вы используете. Все эти @ вещи не являются Javascript.
3. Посмотрите на сгенерированный исходный код.
Ответ №1:
Я думаю, это потому, что вам не хватает кавычек.
Итак, ваш код должен быть: data: { folderName: "@ViewBag.SampleProjectName" },
В конце концов, когда вы заключаете url
в кавычки, почему бы и нет folderName
?
Комментарии:
1. Я думал, что помещение моей переменной в кавычки передаст литерал «@ViewBag. SampleProjectName» вместо его значения.
2. @StraxTillbaka Но вы тоже передаете
@url...
кавычки. Почему он должен вести себя по-другому?3. Исходный код, который я скопировал, не использовал кавычки, и я неправильно понял, как он работает, пытаясь заставить мой работать. В любом случае, большое спасибо за помощь.