gpt4 book ai didi

c# - 使用 TempData 和重定向填充 ViewBag 时出现问题

转载 作者:太空狗 更新时间:2023-10-29 23:49:08 27 4
gpt4 key购买 nike

我继承了一个 MVC 项目,但我遇到了一些麻烦,因为我对 MVC 和一般的 Web 开发还很陌生。

该项目包含一个生成 View 的 Controller Action 方法。该方法可以在用户直接通过 UI 访问 View 时调用,也可以在用户单击 View 上的按钮执行操作后重新生成 View 。如果在执行操作后重新生成 View ,则需要在页面上显示验证消息。

在 cshtml 文件中,我们在 MainWindow.cshtml 中有以下内容,如果 ViewBag 中存在名为“SavedMessage”的字符串并且不为 null 或空,它只会在条件中呈现表格:

@{ string actionResult = ViewBag.SavedMessage; }
@if (!string.IsNullOrEmpty(actionResult))
{
<tr>
<td>
@actionResult
</td>
</tr>
}

在 Action 方法中,我尝试使用 TempData 对象将字符串值传输到生成 View 的 Action:

public partial class ApproveController : Controller
{
const string IDX_ACTIONRESULT = @"ActionResult";

public ActionResult MyAction(FormCollection collection)
{
try
{
string result_success = @"Action completed successfully";
//Do stuff
TempData[IDX_ACTIONRESULT] = result_success;
return RedirectToAction("MainWindow");
}
catch (Exception e)
{
Logger.reportException(e);
throw e;
}
}
}

在生成 View 的Action中,我们将存储在TempData中的值加载到一个变量中,然后测试变量是否包含任何东西。如果该变量不为空,我将尝试将它包含的任何内容加载到 ViewBag 中。

创建 View 操作:

public partial class ApproveController : Controller
{
public ActionResult MainWindow()
{
//Do Stuff
var actionResult = TempData[IDX_ACTIONRESULT];
if (actionResult != null)
{
Log.info("Action Result Message: " + actionResult);
ViewBag.SavedMessage = actionResult;
}
else
Log.info("Action Result Message is NULL");


return View();
}
}

可能的线索:当通过 UI 而不是从 MyAction() 重定向调用 MainWindow() 方法时,我的日志指示 actionResult 为 null,但是,当通过 MyAction() 重定向调用时,actionResult 是一个 < strong>空字符串。这使我相信 MyAction() 正在用某物 填充 TempData,但我不明白为什么它不包含我在 MyAction() 中分配的字符串。

有人在这里看到确凿的证据吗?

最佳答案

TempData 使用 session 存储来保存数据。我的猜测是您没有启用 session ,因为我不相信它不再默认出现。

您需要将 services.AddSession();app.AddSession(); 添加到您的启动代码中以启用它。

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#installing-and-configuring-session

关于c# - 使用 TempData 和重定向填充 ViewBag 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53210373/

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