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

我最近开始使用asp.net mvc,但我遇到了一个问题。 我有一个aspx页面,它呈现了一些ascx页面。 我想要做的是在aspx页面声明一个全局变量,以便它对所有孩子都可见。 我试过 但它在子页面上不可见。

我能做什么?

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

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

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

您可以将其添加到ViewData,然后将ViewData传递给ascx

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

在RenderPartial上看到msdn

所以在你的aspx页面中你会做类似的事情

 <% ViewData["i"] = 0; %> 

在您的userControl中,您只需要对其进行检索并根据需要使用它

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

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

在RenderAction上看到msdn