在ASP.NET MVC应用程序中,不再使用服务器控件,因此也就没有ViewState或隐藏字段。在ASP.NET Web应用程序中,熟悉数据传递和状态管理机制,例如Session、ViewState、隐藏字段等。但在ASP.NET MVC应用程序中,需要使用其他方式来传递数据。
首先,创建一个新的MVC应用程序,并选择“Empty”模板。然后,在“Controller”文件夹上右键单击,选择“Add”,然后点击“Controller”,并添加名为'HomeController'的控制器。选择'MVC 5 controller - Empty'。
接下来,为'HomeController'添加视图。为此,右键单击动作方法Index,然后点击“Add View”。将“View name”设置为'Index',然后点击'OK'。
在ActionResult Index中编写以下代码:
public ActionResult Index()
{
ViewData["Msg"] = "This is ViewData Example.";
ViewBag.MyData = "This is ViewBag Example.";
return View();
}
在视图'Index'中访问ViewData:
<h1>@ViewData["Msg"]</h1>
<h1>@ViewBag.MyData</h1>
运行应用程序以测试数据,它将显示从控制器传递到视图的消息。
如果想在一个动作到另一个动作之间传递数据,ViewData或ViewBag将不起作用,因为它们不会在动作之间保持数据。在这种情况下,需要使用TempData。使用TempData,可以从一个控制器传递数据到另一个控制器,TempData在HTTP请求期间保持值。使用Return RedirectToAction("TempDataEx"),可以从一个动作重定向到另一个动作。
public class HomeController : Controller
{
public ActionResult Index()
{
TempData["TempModel"] = "This is TempData Example";
return RedirectToAction("TempDataEx");
}
public ActionResult TempDataEx()
{
return View();
}
}
添加新的视图'TempDataEx',并在该视图中访问TempData["TempModel"]的值。在这里,从Index控制器传递数据到TempDataEx控制器。
Session与ASP.NET会话相同,可以保持数据直到关闭浏览器。现在,在Index方法中设置会话,并在Index和TempDataEx视图中访问它。运行应用程序并检查两个视图。可以在两个视图中获取会话数据。
ViewData和ViewBag: