正在从母版页上的下拉列表中获取值

本文关键字:下拉列表 获取 母版页 | 更新日期: 2023-09-27 18:24:06

我有一个母版页和一个Default.aspx页。我的下拉<select>在母版页上。

我想从主页面的下拉列表中选择一个月,并将其分配给另一个类中的变量。然后,default.aspx页面必须使用该变量从数据库中选择日期等于我分配给该变量的日期的数据。

之所以在母版页上选择,是因为选择器应该在整个网站的页面上。

对我来说,导致这个问题的主要原因是defuls.aspx页面上的Page_Load event,它在主页面中的page_Load上触发BEFORE

如果我尝试Page_Init,它是有效的,但选择器代码一直返回0作为值。我还尝试过使用HiddenField,但也失败了。我很感激在这方面的任何帮助!


站点1.主站点:

               <select id="SelectMonth" runat="server" onchange="CmbChange();">
                    <option id="Select" value="0">[Select Month]</option>
                    <option id="January" value="1">January</option>
                    <option id="February" value="2">February</option>
                    <option id="March" value="3">March</option>
                    <option id="April" value="4">April</option>
                    <option id="May" value="5">May</option>
                    <option id="June" value="6">June</option>
                    <option id="July" value="7">July</option>
                    <option id="August" value="8">August</option>
                    <option id="September" value="9">September</option>
                    <option id="October" value="10">October</option>
                    <option id="November" value="11">November</option>
                    <option id="December" value="12">December</option>
                </select>
                <script type="text/javascript">
                    function CmbChange(obj) {
                        var cmbValue = document.getElementById("SelectMonth").value;
                        __doPostBack('SelectMonth', cmbValue);
                    }
                </script>

站点1.Master.cs:

    protected void Page_Load(object sender, EventArgs e)
    {
        int month = Convert.ToInt32(SelectMonth.Value);
        if (month > 0)
        {
            Date.Month = month;
        }
        else
        {
            Date.Month = DateTime.Now.Month;
        } 
    }

默认.aspx:

    protected void Page_Load(object sender, EventArgs e)
    {
        // Example
        var sql = "SELECT * FROM Data WHERE Month = " + Date.Month;
    }

日期.cs:

public static class Date
{
    public static int Month { get; set; }
}

谢谢!

正在从母版页上的下拉列表中获取值

为什么不尝试使用Default.aspx。vb Page_PreRender,然后使用MasterPage上的Page_Load来获取值?

或者使用include:

<%@ MasterType VirtualPath="~/MasterPages/Site.Master"  %>

并调用MasterPage中编写的函数,使用获取DropDown值

Master.FunctionNamedOnMasterPage()

以下是MSDN网站的链接,介绍如何引用MasterPage内容

您需要使用控件的Load并在那里设置变量,因为控件是在页面加载之前加载的。