我最近开始使用asp.net mvc而且我遇到了一个问题。
我有一个aspx页面,它呈现了一些ascx页面。我想要做的是在aspx页面声明一个全局变量,以便它的所有子节点都可以看到它。我尝试了<% var i = 0; %>
,但在子页面上看不到它。
我该怎么办?
答案 0 :(得分:4)
变量不与部分视图共享。 视图只是一段数据的表示。您必须将数据作为模型传递给要渲染的每个视图,无论是普通视图还是部分视图。
<% Html.RenderPartial("ViewName", Model, ViewDataDictionnary) %>
如果您想将变量传递给局部视图,我强烈建议您将此参数添加到局部视图的模型中,而不是通过ViewDataDictionnary另外传递它。
答案 1 :(得分:0)
您可以将其添加到ViewData,然后使用
将ViewData传递给ascx<% Html.RenderPartial("ViewName", Model, ViewData) %>
因此,在您的aspx页面中,您可以执行类似
的操作<% ViewData["i"] = 0; %>
在您的userControl中,您只需要将其重新启动并根据需要使用它
<% int i = (int)ViewData["i"] %>
另一种方法是使用RenderAction并将其作为参数传递...所以我们需要知道如何显示你的ascx。