我正在尝试ViewData
使用ViewDataDictionary
.将主页中的对象传递给视图用户控件.
问题是,ViewDataDictionary
无论我尝试使用哪种方式,都不会在视图用户控件中返回任何值.
下面的示例代码仅使用匿名对象进行演示,尽管此方法或传递ViewData
对象都不起作用.
以下是RenderPartial
我正在尝试使用的辅助方法:
<% Html.RenderPartial("/Views/Project/Projects.ascx", ViewData.Eval("Projects"), new ViewDataDictionary(new { Test = "Mark" })); %>
并在我看来用户控制我执行以下操作:
<%= Html.Encode(ViewData["Test"]) %>
为什么这不会返回任何东西?
谢谢你的帮助.
编辑:
我能够毫无问题地传递和访问强类型模型.这是ViewDataDictionary
我试图用来传递模型之外的单个值...
这是我见过的最好的方法:
<% Html.RenderPartial("/Views/Project/Projects.ascx", Model, new ViewDataDictionary{{"key","value"}});%>
它可能有点hackish,但它让你通过和一些额外的数据发送模型.
不知道是否还有人关心,但我使用KeyValuePair作为ViewDataDictionary.
<% Html.RenderPartial("ItemRow", item, new ViewDataDictionary{ new KeyValuePair("url", url), new KeyValuePair ("count", count), new KeyValuePair ("className", className) }); %>
这样您就可以在一个语句中编写所有内容.可以在视图中访问KVP:
<%= ViewData["url"] %> <%= ViewData["count"] %> <%= ViewData["className"] %>
虽然我通过模型传递的内容可以通过Model访问.*
我正在使用ASP.Net MVC的RTM版本,但是:
<% Html.RenderPartial("~/Views/Project/Projects.ascx", new ViewDataDictionary(new {Key = "Some value"})); %>
在部分视图中引用该值时,请尝试以下操作:
<%= ViewData.Eval("Key") %>
这对我来说似乎已经成功了.如果您这样做,它也会起作用:
<% Html.RenderPartial("~/Views/Project/Projects.ascx", new {Key = "Some value"}); %>
希望这可以帮助.
你有没有尝试过:
<% Html.RenderPartial("~/Views/Project/Projects.ascx", ViewData); %>
还有你在传递之前验证过ViewData ["Test"]在ViewData中吗?另请注意,将ViewData传递给部分控件时,保持模型相同非常重要.
缺口