В моем контроллере у меня есть эта функция:
Function AppError() As ActionResult
Dim myScript As Object = "popup(" + Properties.postError + ")"
Return RedirectToAction("main", myScript)
End Function
С помощью этой функции я хочу вызвать мою страницу бритвы, где у меня есть Javascript с именем popup
с параметром Properties.postError
.Мой сценарий:
<script type="text/javascript">
var errMsg;
function popup(msg) {
errMsg = msg;
window.alert(errMsg);
window.window.focus();
if (window.confirm)
errmsg = '';
msg = '';
}
</script>
Мне нужно всплывающее сообщение об ошибке.Я следую за программой через мой отладчик и вижу, что она идет на мою страницу.Но окно сообщения об ошибке не появляется.Я уже искал в Интернете эту опцию, но безуспешно.Кто-нибудь, чтобы помочь мне в этом вопросе?
ДОПОЛНЕНИЕ - 16/2/19 12: 50 на данный момент я сделал следующее:
Function CBError() As ActionResult
Dim myScript As Object = "popup(" + Properties.postError + ")"
ViewData.Add(New KeyValuePair(Of String, Object)("ScriptName", myScript))
Return View("main", myScript)
End Function
Как мы видим, я изменил функцию, добавив ViewData
Добавляю пару значений аргументов 1) имя 2) значениеДействие сложения работает просто отлично и словарь получает его.В своем сценарии (который находится на моей странице Reazor) я поставил следующее:
<script type="text/javascript">
var vd = @ViewData.Item(0);
function popup(msg) {
var errMsg;
errMsg = msg;
window.alert(errMsg);
window.window.focus();
if (window.confirm)
errmsg = '';
msg = '';
//{ window.location.href = "/" }
}
</script>
Когда я останавливаюсь (с помощью bebugger) в инструкции var vd = @ViewData.Item(0);
, я вижу, что ViewData
совершенно пуст.Нет ценностей нет ничего.Я также добавляю это window.onload = @Html.Raw(ViewBag.MyScript);
И в отладчике выкинуло мне ошибку
"Uncaught SyntaxError: Unnexpected token;"
Есть ли кто-то, чтобы проинструктировать меня, почему это произошло?
ДОПОЛНЕНИЕ - 16/2/19 20: 00 Новая версия функции и скрипта
Function CBError() As ActionResult
Dim myScript As Object = Properties.postError
ViewData.Add(New KeyValuePair(Of String, Object)("Message", myScript))
Return View("main")
End Function<br/>
<script type="text/javascript">
$(document).ready(function (){
alert("@ViewData.Values(0)");
});
</script>
В этой версии я поместил значение message
в ViewData
Но когда программа подходит к точке script
, тогда все ViwData
пусто.Нет значения нет Ключи нет ничего.Кажется, где-то посередине теряются все данные.
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ 17/2/19 11: 13 Проблема была решена ... но не так, как мы носим.Это было решено очень простым способом.Мы запрашивали сообщение об ошибке на странице, на которой мы находимся. Из любой точки кода.Таким образом, я следовал методу рендеринга сообщения в собственность, и я прочитал это сообщение со страницы со следующим Javascript
.Функция:
Function CodePage_Error() As ActionResult
Return View("main")
End Function
Конец Javascript:
<script type="text/javascript">
$(document).ready(function () {
if ("@Properties.InnerError" !== "") {
var msg = "@Properties.InnerError";
window.alert(msg);
} else {
return false;
}
});Javascript находится в файле mainLayout.vbhtml
Вообще говоря, оказалось, что способ передачи с контроллера на страницу невозможен в среде MVC4