У меня проблема с передачей значения из метода OnPostAsync в Register.cshtml. ViewBag не работает. Как решить эту проблему.
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (ModelState.IsValid)
{
var db = new ApplicationDbContext(_optionsBuilder.Options);
var email = db.Users.Where(s => s.Email == Input.Email);
if (email.Count() != 0)
{
ViewBag.pom = 100; // this doesn't work
ViewData["duplicateEmail"] = "Email is already taken";
return Page();
}
...
@{
ViewData["Title"] = "Register";
}
<h2>@ViewData["Title"]</h2>
<div class = "row">
<div class = "col-md-4">
<form asp-route-returnUrl = "@Model.ReturnUrl" method = "post">
<h4>Create a new account.</h4>
<h4>@ViewData["duplicateEmail"] error: @ViewBag.pom</h4>
<hr />
...
да ViewData работает
Тогда ViewBag.pom
тоже сработает. Пожалуйста, покажите свой код просмотра, где вы используете ViewBag.pom
в приведенном выше коде "Viewbag" подчеркнуто красным, как будто не хватает какого-то "использования"
Добавьте код просмотра к вопросу.
Я не могу -> «Похоже, что ваш пост — это в основном код; пожалуйста, добавьте больше деталей». Я новичок в stackoverflow
Хорошо! Вставьте его в комментарий.
вижу ничего страшного! Можете ли вы получить удаленный доступ с помощью Team Viewer, пожалуйста?
Эта проблема в помеченном файле: ibb.co/rZFk6Jt
Согласно документы:
ViewBag
isn't available in Razor Pages.
Для получения дополнительной информации о том, что Зачем недоступен в готовом виде, см. этот Проблема с GitHub, который включает несколько комментариев от самого Дэмиена Эдвардса:
We purposefully didn't add ViewBag because I wanted to discourage its use.
...
ViewBag uses dynamic which in our testing introduces a measurable performance impact on the processing of pages or views that use it. As such, I'd rather it not be available by default.
Решение состоит в том, чтобы либо использовать явное свойство (как вы делаете для ReturnUrl
), либо просто использовать ViewData
(как вы делаете для duplicateEmail
).
попробуйте заменить viewBag на viewData :
ViewData["pom"] = 100;
ViewData["duplicateEmail"] = "Email is already taken";
return Page();
<div class = "row">
<div class = "col-md-4">
<form asp-route-returnUrl = "@Model.ReturnUrl" method = "post">
<h4>Create a new account.</h4>
<h4>@ViewData["duplicateEmail"] error: @ViewData["pom"]</h4>
<hr />
ViewBag был намеренно опущен на Razor Pages.
ViewData["duplicateEmail"]
- это работа?