簡體   English   中英

從母版頁上的下拉菜單中獲取價值

[英]Getting value from dropdown on master page

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

我想從母版頁上的下拉列表中選擇一個月,然后將其分配給其他類中的變量。 然后,default.aspx頁必須使用該變量從數據庫中選擇日期等於我分配給該變量的日期的數據。

之所以在母版頁上進行選擇,是因為選擇器應該位於整個站點的所有頁面上。

對我而言,導致此問題的主要原因是defauls.aspx頁上的Page_Load event ,該Page_Load event在“母版”頁中的Page_Load 之前觸發。

如果我嘗試Page_Init ,它可以工作,但是選擇器代碼始終返回0作為值。 我也嘗試使用HiddenField ,但它也失敗了。 我對此表示感謝!


Site1.Master:

               <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>

Site1.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;
        } 
    }

Default.aspx的:

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

Date.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()

是有關如何引用MasterPage內容的MSDN網站的鏈接。

您需要消耗控件的Load並在其中設置變量,因為控件是在頁面加載之前加載的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM