如何在ASP.NET MVC页面中声明全局变量

时间:2010-06-04 13:26:49

标签: c# .net asp.net asp.net-mvc global-variables

我最近开始使用asp.net mvc而且我遇到了一个问题。 我有一个aspx页面,它呈现了一些ascx页面。我想要做的是在aspx页面声明一个全局变量,以便它的所有子节点都可以看到它。我尝试了<% var i = 0; %>,但在子页面上看不到它。

我该怎么办?

2 个答案:

答案 0 :(得分:4)

来自aspx页面的

变量不与部分视图共享。 视图只是一段数据的表示。您必须将数据作为模型传递给要渲染的每个视图,无论是普通视图还是部分视图。

<% Html.RenderPartial("ViewName", Model, ViewDataDictionnary) %>

如果您想将变量传递给局部视图,我强烈建议您将此参数添加到局部视图的模型中,而不是通过ViewDataDictionnary另外传递它。

答案 1 :(得分:0)

您可以将其添加到ViewData,然后使用

将ViewData传递给ascx
<% Html.RenderPartial("ViewName", Model, ViewData) %>

请参阅msdn on RenderPartial

因此,在您的aspx页面中,您可以执行类似

的操作
<% ViewData["i"] = 0; %>

在您的userControl中,您只需要将其重新启动并根据需要使用它

<% int i = (int)ViewData["i"] %>

另一种方法是使用RenderAction并将其作为参数传递...所以我们需要知道如何显示你的ascx。

请参阅msdn on RenderAction