发布数据时维护ViewBag值
本文关键字:维护 ViewBag 数据 布数据 | 更新日期: 2023-09-27 18:26:34
我有一个逻辑问题需要回答!!
这是一个场景。。
-控制器内
ViewBag.Name = "aaaa";
-查看
@ViewBag.Name
"在我的控制器中,我已经为ViewBag设置了值,并从VIew中的ViewBag中检索了值。现在在VIew中,我有一个按钮,它将一些数据发布到HttpPost方法。在HttpPost方法中,我更改了ViewBag的值。因此,在执行该方法后,ViewBag内的值是否会更改当前视图??"
-在HttpPost方法中
ViewBag.Name="bbbb";
您在操作方法上设置的ViewBag数据将仅对您正在使用的即时视图可用。当您将其发布回服务器时,它将不可用,除非您将其保存在表单中的隐藏变量中。这意味着,在HttpPost操作方法中更改ViewBag数据后,您可以在视图中看到您正在返回
public ActionResult Create()
{
ViewBag.Message = "From GET";
return View();
}
[HttpPost]
public ActionResult Create(string someParamName)
{
ViewBag.Message = ViewBag.Message + "- Totally new value";
return View();
}
假设您的视图正在打印ViewBag数据
<h2>@ViewBag.Message</h2>
@using(Html.BeginForm())
{
<input type="submit" />
}
结果将是
对于您的GET Aciton,它将打印"From GET
"
用户提交表单后,会打印"Totally new value
";
如果您希望公布以前的查看行李数据,请将其保存在隐藏的表单字段中。
<h2>@ViewBag.Message</h2>
@using(Html.BeginForm())
{
<input type="hidden" value="@ViewBag.Message" name="Message" />
<input type="submit" />
}
以及您的操作方法,我们将接受隐藏字段值以及
[HttpPost]
public ActionResult Create(string someParamName,string Message)
{
ViewBag.Message = ViewBag.Message + "- Totally new value";
return View();
}
结果将是
对于您的GET Aciton,它将打印"From GET
"
用户提交表单后,会打印"From GET-Totally new value
";
尽量避免像ViewBag/ViewData这样的动态内容在操作方法和视图之间传输数据。您应该使用强类型视图和视图模型。
ViewBag
无法在请求中存活。发布后唯一存在的数据是您发布的数据,其中不包括ViewBag
。不确定你的问题是什么。