【发布时间】:2010-06-04 13:26:49
【问题描述】:
我最近开始使用 asp.net mvc,但遇到了问题。
我有一个呈现几个 ascx 页面的 aspx 页面。我想做的是在 aspx 页面上声明一个全局变量,以便它的所有子项都可以看到它。我尝试了<% var i = 0; %>,但在子页面上看不到它。
我能做什么?
【问题讨论】:
标签: c# .net asp.net asp.net-mvc global-variables
我最近开始使用 asp.net mvc,但遇到了问题。
我有一个呈现几个 ascx 页面的 aspx 页面。我想做的是在 aspx 页面上声明一个全局变量,以便它的所有子项都可以看到它。我尝试了<% var i = 0; %>,但在子页面上看不到它。
我能做什么?
【问题讨论】:
标签: c# .net asp.net asp.net-mvc global-variables
aspx 页面中的变量不与部分视图共享。 视图只是一段数据的表示。您必须将数据作为模型传递给要渲染的每个视图,无论是普通视图还是 PartialView。
<% Html.RenderPartial("ViewName", Model, ViewDataDictionnary) %>
如果您想将变量传递给局部视图,我强烈建议您将此参数添加到局部视图的模型中,而不是通过 ViewDataDictionnary 额外传递。
【讨论】:
您可以将其添加到 ViewData,然后将 ViewData 传递给 ascx
<% Html.RenderPartial("ViewName", Model, ViewData) %>
所以在你的 aspx 页面中你会做类似的事情
<% ViewData["i"] = 0; %>
在您的 userControl 中,您只需检索它并根据需要使用它
<% int i = (int)ViewData["i"] %>
另一种方法是使用 RenderAction 并将其作为参数传递...所以我们需要知道您如何显示 ascx。
【讨论】: