在事件处理程序无效的情况下调用代码

时间:2016-08-01 11:37:32

标签: javascript c# jquery asp.net ajax

我有一个由两个下拉框和一个gridview组成的网页。我创建了一个收集下拉框数据的Web服务,我使用了ajax调用来填充它们。我遇到的问题是当我尝试添加OnSelectedIndexChanged事件处理程序时,它似乎无法正常工作。我环顾四周,尝试了一些事情。我已将EnableEventValidation设置为false(我认为这解决了与我的ddl在js中动态填充相关的问题)。我还在我的ddl上启用了AutoPostBack。

当我更改ddl索引时,页面似乎正在回发,但我的dll索引会反转回上一个选定的索引。

<div class="row control-group">
     <div class="form-group col-xs-12" id="mailbox">
           <label>Which bills would you like to view?</label>
           <asp:DropDownList ID="ddlDepartment" runat="server" CssClass="form-control"></asp:DropDownList>
           <asp:DropDownList ID="ddlUser" runat="server" CssClass="form-control" OnSelectedIndexChanged="ddlUser_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
           <p class="help-block text-danger"></p>
    </div>
</div>

var a = 1;我只能在那里设一个断点。

protected void ddlUser_SelectedIndexChanged(object sender, EventArgs e)
{
   var a = 1;
}

下面是ajax请求和生成网格

function getUsers() {

  var department = $('select#MainContent_ddlDepartment option:selected').val();

  $.ajax({
      type: "GET",
      url: "WEBSERVICEURL" + department + "",
      contentType: "json",
      dataType: "json",
      async: false,
      success: function (data) {
          var ddlUsers = $("#MainContent_ddlUser");
          ddlUsers.empty();
          $.each(data, function () {
              ddlUsers.append($("<option></option>").val(this['SamAccountName']).html(this['DisplayName']));
          });
      },
      error: function (xhr) {
      }
  })
}

由于

1 个答案:

答案 0 :(得分:0)

你不能这样做。在ASP.NET中内置了一个名为Event Validation的安全功能,它可以阻止你发布服务器创建页面时不存在的数据。

您(或黑客)正在使用javascript更改下拉选项,然后尝试通过SelectedIndexChanged将更改提交到服务器 - 您能看到为什么不允许这样做吗?

作为一种解决方法,您可以使用jQuery在下拉列表上实现change()事件,并使用$ .ajax进行服务器端调用:

$("#ddlUser").change(function () {
    alert("write $.ajax call to call the server here...");
});
相关问题