ASP.NET MVC中的数据传递方式

ASP.NET MVC应用程序中,不再使用服务器控件,因此也就没有ViewState或隐藏字段。在ASP.NET Web应用程序中,熟悉数据传递和状态管理机制,例如Session、ViewState、隐藏字段等。但在ASP.NET MVC应用程序中,需要使用其他方式来传递数据。

创建新的MVC应用程序

首先,创建一个新的MVC应用程序,并选择“Empty”模板。然后,在“Controller”文件夹上右键单击,选择“Add”,然后点击“Controller”,并添加名为'HomeController'的控制器。选择'MVC 5 controller - Empty'。

添加视图

接下来,为'HomeController'添加视图。为此,右键单击动作方法Index,然后点击“Add View”。将“View name”设置为'Index',然后点击'OK'。

使用ViewData和ViewBag

在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>

运行应用程序以测试数据,它将显示从控制器传递到视图的消息。

使用TempData

如果想在一个动作到另一个动作之间传递数据,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

Session与ASP.NET会话相同,可以保持数据直到关闭浏览器。现在,在Index方法中设置会话,并在Index和TempDataEx视图中访问它。运行应用程序并检查两个视图。可以在两个视图中获取会话数据。

要点

ViewData和ViewBag:

  • 可以从控制器传递数据到视图的第一个请求。
  • ViewData和ViewBag之间的差异在于,ViewData的语法易于使用,而ViewBag使用了C# 4中称为Dynamic的特性。
  • ViewData需要类型转换并检查null值,而ViewBag不需要。
  • 不能使用ViewData和ViewBag在动作之间传递数据。

TempData

  • 可以从一个控制器传递数据到另一个控制器或从一个动作到另一个动作。

Session

  • 可以保持数据直到关闭浏览器。它与ASP.NET会话相同。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485