代码之家  ›  专栏  ›  技术社区  ›  Andre Gallo

ASP.NET-带jQuery的Ajax请求

  •  0
  • Andre Gallo  · 技术社区  · 16 年前

    我有一个文本框,它使用jQuery触发ajax请求:

    <asp:TextBox ID="postcodeTextBox" runat="server" Text='<%# Bind("POSTAL_ZIP_CODE") %>'>
    
    $(document).ready(PageLoad);
    
    function PageLoad() {
        $(container + 'parentProjectTextBox').change(GetProjectName);
    }
    
    function GetProjectName() {
        var projectNumber = $(this).val();
        if (projectNumber == '') return;
        $(container + 'parentProjectPanel').block({ message: '<img src="../Resources/RadControls/Ajax/Skins/Default/loading7.gif" />' });
        $.ajax({
            type: 'POST',
            url: projectMasterWebServicesUrl + 'GetProjectName',
            data: "{'projectNumber':'" + projectNumber + "'}",
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: GetProjectNameOnSuccess,
            error: GetProjectNameOnError
        });
    }
    

    此ajax请求获取一个列表以填充此下拉列表:

                            <asp:DropDownList ID="cityDropDownList" runat="server" OnDataBound="cityDropDownList_DataBound">
                                <asp:ListItem Text="...Select..." Value="0">
                                </asp:ListItem>
                            </asp:DropDownList>
    

    一切正常。我唯一的问题是,当我更新formView priod以保存该记录时,我看不到设置为该下拉列表的值。当我在客户端填充这个下拉列表时,我发现ASP.NET无法跟踪它。。。。

    显然,当我打开/关闭该页面的EnableEventValidation属性时,有时会得到正确的值。。。。。

    2 回复  |  直到 16 年前
        1
  •  1
  •   BobbyShaftoe    16 年前

    您应该创建一个隐藏字段来存储该值。在Javascript中更新该HiddenField,然后在服务器端读取它。此外,如果EventValidation=true,并且更改下拉列表中的项目,则会出现众所周知的异常。

        2
  •  0
  •   Chris Brandsma    16 年前

    这可能不是问题……但您是否正在检查页面加载中的Page.IsPostBack?

    如果您正在从页面加载下拉控件,并且没有检查