none
关于viewbag,viewdata和页面强类型 RRS feed

  • 问题

  • 大家好,

    我想请问下viewbag,viewdata,还有页面强类型有什么区别?

    都是在什么情况下用呢?

    一般用哪个比较好呢?

    谢谢!
    2016年11月14日 8:02

全部回复

  • 你好,

    据我所知,三个都是用来页面间传值的。

    ViewData
    ViewData用来从Controller向对应的View传递值。
    ViewData的只在当前当前的请求中有效,生命周期和View相同,其值不能在多个请求中共享。
    在重定向(redirection)后,ViewData中存储的变量值将变为null。
    在取出ViewData中的变量值是,必须进行合适的类型转换(隐式或显式)和空值检查。
    ViewData更适合从Controller向View传递简单对象数据时使用。

    例子:

    Action:

    public ActionResult Index()
    {
        ViewData["Message"] = "From ViewData";
        return View();
    }

    View:

    <div>
    @ViewData["Message"].ToString()
    </div>
    

    ViewBag
    ViewBag是一个动态类型变量(dynamic),这是C# 4.0引入的新特性,变量类型会在运行时进行解析。
    ViewBag基本上是ViewData的包装,也是用来从Controller向View来传递值的。
    ViewBag也只在当前的请求中有效。
    在重定向(redirection)后,ViewBag中存储的变量值将变为null
    因为ViewBag是动态类型,所以我们在取得其值时,不需要进行类型转换。
    ViewBag更适合从Controller向View传递复杂对象数据时使用, 因为取出存储在其中的数据变量时无需进行类型转换。

    Action:

    public ActionResult Index()
    {
        ViewBag.Message = "From ViewBag";
        return View();
    }

    View:

    <div>
    @ViewData.Message
    </div>
    

    页面强类型:

    页面强类型也是适合传递复杂的对象时使用,具体的话你可以参照之前的帖子。


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年11月14日 10:00