【发布时间】:2021-06-03 14:03:37
【问题描述】:
我在 ASP.NET 4 中有简单的视图:
<form action="GetWeather" method="post">
<input name="city" type="text" />
<input type="submit" />
</form>
<h1>@ViewBag.City</h1>
还有一个简单的控制器,它应该在同一页面上显示来自表单的输入:
public class WeatherController : Controller
{
string cityName = "TBD";
public ActionResult Index()
{
ViewBag.City = cityName;
return View();
}
[HttpPost]
public ActionResult GetWeather(string city)
{
cityName = city;
return Redirect("/Weather/Index");
}
}
提交后,我不断收到我的"TBD" 字符串。我找不到任何关于它的东西,因为一切都是基于模型的,我不需要。
【问题讨论】:
-
您没有在处理 POST 的操作中设置 ViewBag.City。当您根据表单输入调试 GetWeather 时
city是否正确? -
@Crowcoder 是的,在调试时,cityName 设置为传入参数的字符串,重定向到 Index 后,它又是“TBD”
-
这是因为每个请求都会实例化一个新的 WeatherController 并且您将其设置为“TBD”。我鼓励你将视图模型传递给视图,而不是依赖于 viewbag。
-
谢谢,我以为它是每个会话实例化的
标签: c# .net asp.net-mvc