c# - 从母版页的下拉菜单中获取值(value)

标签 c# javascript html asp.net

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

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

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

导致我出现此问题的主要原因是 Page_Load eventBEFORE 主页中的 Page_Load 触发的 defauls.aspx 页面上。

如果我尝试 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 来获取值呢?

或者使用包含:

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

然后调用在您的 MasterPage 中编写的函数以使用以下方法获取 DropDown 值:

Master.FunctionNamedOnMasterPage()

Here是指向有关如何引用 MasterPage 内容的 MSDN 站点的链接

关于c# - 从母版页的下拉菜单中获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17745923/

相关文章:

javascript - 为什么循环属性不适用于我的第二个动画?

c# - 事件处理程序中的功能代码不好的做法?

c# - 如何将 EF Core 2.2.4 数据库与 Asp.Net Core 2.1 项目结合使用

javascript - 如何更改标记(箭头)的颜色?

javascript - 在父函数中发送 ajax 后返回 true 或 false?

android - 为 Android 开发 PhoneGap - 不同屏幕尺寸/像素密度的最佳实践

php - 为什么我无法在 HTML 上显示阿拉伯语

c# - 打开标准 "Find Network Printer"对话框

c# - 捕获异常,添加数据,然后重新抛出

javascript - 如何从文本区域值中获取对象