asp.net-mvc - 表单发布后如何保存 ViewBag 数据?

标签 asp.net-mvc asp.net-mvc-3 razor viewbag

所以我有一个 ViewBag.Something并且这个数据是随机生成的。在我看来,我将它设置为这样的标签 @Html.LabelFor(m => m.Something, (string)ViewBag.Something) .这很好,但是当我提交表单时可能会出现错误,如果有错误,我需要这个标签保持不变,我不再想要动态/随机数据,所以我不会调用生成的 Controller 方法这个 ViewBag。有没有办法在我的 Controller 中没有一些私有(private)变量的情况下保留这个值? MVC/Razor 的一些好方法?

最佳答案

选项1:

使用路由值将“ViewBag.Something”的值传递给 Controller ​​:

@Html.ActionLink("ButtonText", "ActionName", new { Something = @ViewBag.Something })

选项 2:
您可以使用临时数据 .
public ActionResult Index()
{
 var Something = "YOURVALUE";
 TempData["Something"] = Something;
.......
}


public ActionResult OtherAction()
{
    var Something = TempData["Something "];
    ...........
}

在操作方法之间传递状态

操作方法可能必须将数据传递给另一个操作,例如,如果在发布表单时发生错误,或者该方法必须重定向到其他方法,例如当用户被定向到登录 View 然后返回到原来的 Action 方法。

Action 方法可以在调用 Controller 的 RedirectToAction 方法调用下一个 Action 之前将数据存储在 Controller 的 TempDataDictionary 对象中。 TempData 属性值存储在 session 状态中。在设置 TempDataDictionary 值之后调用的任何操作方法都可以从对象中获取值,然后处理或显示它们。 TempData 的值会一直存在,直到它被读取或 session 超时。以这种方式持久化 TempData 可以实现重定向等场景,因为 TempData 中的值在单个请求之外可用。

关于asp.net-mvc - 表单发布后如何保存 ViewBag 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997681/

相关文章:

javascript - 如何将数据绑定(bind)值分配给 JavaScript 变量

c# - 针对自托管 Web API (OWIN/Katana) 验证 MVC 客户端

asp.net-mvc-3 - 了解 MVC 应用程序的体系结构

javascript - "Tag is missing a name"带 Razor

c# - 在 asp.net mvc 中以编程方式中止 OutputCache 持续时间

asp.net-mvc-3 - 如何调试AutoMapper "Missing type map configuration or unsupported mapping"错误

razor - Visual Studio 2013 不打开 *.cshtml 文件

javascript - MVC3 客户端验证不起作用

asp.net - 如何使用 Razor 链接到 ASP.NET MVC 4 中的文件?

c# - MVC Ajax.beginform 自定义确认对话