如何在客户端填充投递箱数据的情况下获取投递箱选择的值

时间:2013-02-20 05:22:02

标签: javascript asp.net

我有一个有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的不同列表。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容

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

答案 1 :(得分:0)

尝试使用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!'