ViewData,@ Html.ViewData和@ Ajax.ViewData有什么区别?

时间:2016-11-29 14:52:52

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-5 viewdata

如果有人知道为什么会这样做,我试图理解但更多的细节。

控制器操作

public ActionResult TestView()
        {
            ViewData["UserInfoData"] = "From User Info Action";            
            return View();
        }

查看(TestView.cshtml)

@{
    ViewBag.Title = "UserInfo";
    ViewData["UserInfoData"] = "This is the problem";    
}

@Html.ViewData["UserInfoData"].ToString()
<br />
@Ajax.ViewData["UserInfoData"].ToString()
<br />
@ViewData["UserInfoData"].ToString()     
  

当我执行上述操作时,它返回视图,输出如下所示   来自用户信息操作
  来自用户信息操作
  这是问题

为什么@ Html.ViewData和@ Ajax.ViewData指向与ViewData不同的viewdata?有什么用?

同样在上面的视图@ ViewBag.Title中,我可以访问@ViewData [“Title”]视图但不能访问@Html和@Ajax。它似乎指向正在创建或从控制器传递的不同ViewDataDicitionary而不是 在View上更新?

我试着看一下细节,发现@Html和@Ajax都依赖于ViewDataContainer,它指向一些编译cshtml类,什么是ViewDataContainer?有什么用?

dotnetfiddle链接:https://dotnetfiddle.net/U7s25u

enter image description here

enter image description here

enter image description here

enter image description here

0 个答案:

没有答案