【问题标题】:How to get drop box selected value where drop box data were being populated in client side如何在客户端填充下拉框数据的情况下获取下拉框选择值
【发布时间】:2013-02-20 05:22:01
【问题描述】:

我有一个包含 2 个投递箱的页面。第二个下拉框中的数据将根据第一个下拉框中的所选数据而变化。第一个下拉框的更改数据在客户端脚本中。现在我尝试在服务器的第二个下拉框中获取所选值侧,但没有。如何解决这个问题?

代码如下:

<div class="field">
    <input type="hidden" id="ddlFormatOriginalData" name="ddlFormatOriginalData" runat="server" />
    <asp:DropDownList ID="d1" runat="server">
    </asp:DropDownList>
</div>

<div class="field">
    <input type="hidden" id="ddlFormatOriginalData" name="ddlFormatOriginalData" runat="server" />
    <asp:DropDownList ID="d2" runat="server">
    </asp:DropDownList>
</div>

Javascript 方面

$addHandler(ddlFormat, 'change', upDateD2);

function upDateD2(sender) {

    var PaperList = $get(ddlPaperStockID); // gets the list for a certain selected value in d1

    for (j = 0; j < PaperList.options.length; j++) {
        // added List here to d2
    }
}

服务器端

string val = d2.selected.value;

但我没有得到任何 val 虽然在 firebug 中显示了 d2 drop box 的不同列表。

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    你可以像下面这样使用

    protected override void OnInit(EventArgs e)
    {
         var postedOptionValue = Request.Form[d2.UniqueID];
         d2.Items.Add(new ListItem(postedOptionValue));
         base.OnInit(e);
    }
    

    但你应该注意以下异常

    Invalid postback or callback argument.  
    

    使用

    启用事件验证
       <pages enableEventValidation="true"/> 
    

    在配置中或

        <%@ Page EnableEventValidation="true" %> 
    

    在一个页面中。出于安全目的,此功能会验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。
    如果数据有效且符合预期,请使用 ClientScriptManager。
    RegisterForEventValidation 方法,以便注册回发或回调数据以进行验证。

    编辑 1

    更多阅读-
    Invalid postback or callback argument. When dropdown list populated with jquery and there is a postback

    【讨论】:

    • @RJUy 你为什么要使用隐藏字段。
    • 您好 Krshekhar,感谢您提供此信息。我现在将尝试实现它,如果一切正常,我会通知您。隐藏字段还有其他用途... :)
    • 当我添加这个时 EnableEventValidation="true" 提交按钮时出错
    • 根据我对 enableEventValidation="true" 的研究将导致安全问题。我认为该解决方案不会被公司接受。我通过在服务器端设置值来尝试另一种解决方案。我希望这个能奏效。虽然非常感谢您的帮助。我真的很感谢你的时间。
    • 您可以利用 html list option 并将所选值设置在隐藏字段中。这种方法不需要EnableEventValidation="true"
    【解决方案2】:

    尝试使用 JQuery 数据 - 例如:

    <div id="test" data-cool="demo"></div>
    

    在 JS 中:

    $("#test").data("cool"); // outputs: 'demo'
    

    你也可以用它来设置更新变量:

    $("#test").data("cool", "really cool!"); // updates the data-cool field to: 'really cool!'
    

    【讨论】:

      猜你喜欢
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多