当前位置:  开发笔记 > 编程语言 > 正文

在发布数据时维护ViewBag值

如何解决《在发布数据时维护ViewBag值》经验,为你挑选了1个好方法。

我有一个需要回答的逻辑问题!

这是一个场景..

- 在控制器中

ViewBag.Name = "aaaa";

- 在视图中

@ViewBag.Name

"在我的控制器中,我已经为ViewBag设置了值,并在VIew中从ViewBag中检索了值.现在在View中,我有一个按钮,它将一些数据发布到HttpPost方法.在HttpPost方法中,我更改了ViewBag的值.那么在执行该方法之后,viewbag中的值是否会因当前视图而改变?"

- 在HttpPost方法中

ViewBag.Name="bbbb";

Shyju.. 10

您在操作方法上设置的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数据

@ViewBag.Message

@using(Html.BeginForm()) { }

结果将是

对于你的GET Aciton,它将打印" From GET"

用户提交表格后,将打印" Totally new value";

如果您希望发布以前的视图包数据,请将其保留在隐藏的表单字段中.

@ViewBag.Message

@using(Html.BeginForm()) { }

而你的Action方法,我们也会接受隐藏的字段值

[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这样的动态内容在您的操作方法和视图之间传输数据.您应该使用强类型视图和视图模型模型.



1> Shyju..:

您在操作方法上设置的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数据

@ViewBag.Message

@using(Html.BeginForm()) { }

结果将是

对于你的GET Aciton,它将打印" From GET"

用户提交表格后,将打印" Totally new value";

如果您希望发布以前的视图包数据,请将其保留在隐藏的表单字段中.

@ViewBag.Message

@using(Html.BeginForm()) { }

而你的Action方法,我们也会接受隐藏的字段值

[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这样的动态内容在您的操作方法和视图之间传输数据.您应该使用强类型视图和视图模型模型.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有