在多个页面上填充标签

时间:2012-04-19 17:08:43

标签: asp.net vb.net

我有一个下拉列表,用于填充计算中的一组数据。我的asp.net网站上有多个页面,我想在主页上的下拉列表中显示一个带有当前数据的标签。这是我的代码......

''' In the page load'''
Dim Val As Double
    If Date.Now.Month = 10 OrElse Date.Now.Month = 11 OrElse Date.Now.Month = 12 Then
        Val = Date.Now.Year
    Else
        Val = Date.Now.Year - 1
    End If

    For i = Val To 1996 Step -1
        dropdownlist1.Items.Add(i)
    Next
End Sub

'''function in a seperate class'''
Function GetDates(currentYear As Double) As String
    Dim x As String
    Return x
End Function

'''In the selected index event of the drop down (populates years ie. 2011, 2010, 2009)'''
Dim x As String = class1.GetDates(dropdownlist1.Text)

'''In the other pages load events''' 
Dim x As String = class1.GetDates(label1.Text)

以上代码行是我想填写当年(即2011年,2010年,2009年)的任何建议吗?

3 个答案:

答案 0 :(得分:1)

在您的主页面中将所选年份保存到会话:

Session.Add("myYear", dropdownlist1.SelectedValue)

在其他页面中:

Function GetDates(currentYear As Double) As String 
    Dim x As String 
    x = Session("myYear")
    Return x 
End Function 

答案 1 :(得分:1)

我相信您应该考虑使用下拉列表创建母版页,并根据该母版页创建9页。

答案 2 :(得分:0)

这似乎非常适合用户控件。您可以将标签显示的功能合并到一个类中。对显示/功能的任何后续更改只需编码一次。此外,通过允许每个页面决定是否/将显示什么,这种方法将为您提供将来不可避免地需要的灵活性。

通过创建一个类,如下面的SettingsManager,您可以从站点的任何位置通过单个点访问Year值,而无需知道存储方式/位置的详细信息。

public class SettingsManager
{
    public string Year
    {
        get
        {
            if (HttpContext.Current.Session["SettingsManager:Year"] == null)
            {
                //set default value
            }
            return HttpContext.Current.Session["SettingsManager:Year"].ToString();
        }
        set
        {
            HttpContext.Current.Session["SettingsManager:Year"] = value;
        }

    }
}

您的用户控件将有一个简单的标签(lblYear)以及代码隐藏中的以下代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            this.lblYear.Text = new SettingsManager().Year;
        }
    }

现在,对于要在其中显示的每个页面,只需注册用户控件:

<%@ Register Src="~/WebUserControl1.ascx" TagName="YearControlUC" TagPrefix="SO" %>

并在页面的任何位置插入控件的实例:

<SO:YearControlUC runat="server" />

瞧,这是一个简单易用的解决方案。

编辑:

'''在下拉的选定索引事件中(填充年份,即2011年,2010年,2009年)'''

Dim x As String = class1.GetDates(dropdownlist1.Text)

更改为

New SettingsManager().Year = dropdownlist1.Text