如果有人知道为什么会这样做,我试图理解但更多的细节。
控制器操作
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