【问题标题】:Transfer of value from register controller从寄存器控制器转移值
【发布时间】:2019-04-11 19:46:05
【问题描述】:

我在将值从方法“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["duplicateEmail"]- 有效吗?
  • 是的 ViewData 工作
  • 那么ViewBag.pom 也可以使用。请在您所在的位置显示您的查看代码ViewBag.pom
  • 上面代码中的“Viewbag”用红色下划线,好像少了一些“using”
  • 将您的查看代码添加到问题中。

标签: c# asp.net-core asp.net-core-identity


【解决方案1】:

根据docs

ViewBag 在 Razor 页面中不可用。

有关为什么 无法开箱即用的更多信息,请参阅GitHub issue,其中包括来自 Damien Edwards 本人的一些 cmets:

我们故意不添加 ViewBag,因为我想阻止它的使用。

...

ViewBag 使用动态,在我们的测试中这会对使用它的页面或视图的处理产生可衡量的性能影响。因此,我宁愿它默认不可用。

解决方案是使用显式属性(就像您对 ReturnUrl 所做的那样)或只使用 ViewData(就像您对 duplicateEmail 所做的那样)。

【讨论】:

    【解决方案2】:

    尝试用 viewData 替换 viewBag :

    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 被故意遗漏在剃须刀页面中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2016-07-20
      • 1970-01-01
      • 2015-02-06
      • 2014-06-07
      • 2016-11-11
      • 1970-01-01
      相关资源
      最近更新 更多