asp.net MVC RC1 RenderPartial ViewDataDictionary
我正在尝试使用ViewData
将ViewData
对象从母版页传递给视图用户控件。
问题是ViewDataDictionary
没有在我尝试它的方式中返回视图用户控件中的任何值。
下面的示例代码仅使用匿名对象进行演示,尽管此方法或传递ViewData
对象都ViewData
。
以下是我正在尝试使用的RenderPartial
辅助方法:
并在我看来用户控制我执行以下操作:
为什么这不会返回任何东西?
谢谢你的帮助。
编辑:
我能够毫无问题地传递和访问强类型模型。 这是我试图用来传递的ViewDataDictionary
只说模型之外的一个值…
你有没有尝试过:
<% Html.RenderPartial("~/Views/Project/Projects.ascx", ViewData); %>
还有你validationViewData [“Test”]在传递之前是在ViewData中吗? 另请注意,将ViewData传递给部分控件时,保持模型相同非常重要。
缺口
这是我见过的最好的方法:
<% 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["Projects"]); %>
在您的控制器或主视图中:
ViewData["Test"] = "Mark";
如果未在RenderPartail中指定模型或视图数据字典,则它将使用包含视图中的模型或视图数据字典。