我有一个需要回答的逻辑问题!
这是一个场景..
- 在控制器中
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这样的动态内容在您的操作方法和视图之间传输数据.您应该使用强类型视图和视图模型模型.
您在操作方法上设置的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这样的动态内容在您的操作方法和视图之间传输数据.您应该使用强类型视图和视图模型模型.