gpt4 book ai didi

asp.net-mvc - 我的 ViewBag 无法工作有什么原因吗?

转载 作者:行者123 更新时间:2023-12-02 12:27:47 24 4
gpt4 key购买 nike

我在 controller 中有以下 ActionResult,如果成功,您可以看到我在 ViewBag 中设置了一条消息。然后在 View 上,如果它不为空,它应该输出该消息。但是,我无法显示该消息,也没有看到问题所在。

[HttpPost]
public ActionResult Create(FormCollection collection)
{
try
{
context.Roles.Add(new Microsoft.AspNet.Identity.EntityFramework.IdentityRole()
{
Name = collection["RoleName"]
});
context.SaveChanges();

ViewBag.ResultMessage = "Role created successfully.";
return RedirectToAction("Index");
}
catch (Exception)
{
return View();
}
}

这是我的 Index.cshtml

@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>
@{
ViewBag.Title = "Index";
}

<h2>Roles Listing </h2>

@ViewBag.ResultMessage

@Html.ActionLink("Create New Role", "Create") | @Html.ActionLink("Manage User Role", "ManageUserRoles")

<div>
<table class="table table-bordered table-condensed table-striped table-hover ">
<thead>
<tr>
<th>Role</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach (var role in Model)
{
<tr>
<td><strong>@role.Name</strong></td>
<td>
<span onclick="return confirm('Are you sure you want to delete @role.Name?')"><a href="/Roles/Delete?RoleName=@role.Name" class="delLink" style="color:red;">Delete</a></span> |
@Html.ActionLink("Edit", "Edit", new { roleName = @role.Name })
</td>
</tr>
}
</tbody>
</table>
</div>

最佳答案

当您从 Controller 移动到 View 时,

ViewBag有助于维护数据。生命周期短意味着当发生重定向时值变为空。这是因为他们的目标是提供一种在 Controller 和 View 之间进行通信的方法。这是服务器调用中的一种通信机制。

由于您使用的是 RedirectToAction,因此 ViewBag 在到达 view 时将变为 null

您可以使用TempData来实现:

TempData["ResultMessage"] = "Role created successfully.";

它使用Session作为存储,但在第二次响应后它将不再存在。当您从一个 Controller 移动到另一个 Controller 或从一个操作移动到另一个操作时,TempData有助于维护数据。换句话说,当您重定向时,Tempdata 有助于维护这些重定向之间的数据。它在内部使用 session 变量。在当前和后续请求期间使用 TempData 仅意味着当您确定下一个请求将重定向到下一个 View 时使用它。

有关此内容的更多了解,请参阅此 link

关于asp.net-mvc - 我的 ViewBag 无法工作有什么原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34447310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com