ASP.NET - запросы Ajax с помощью jQuery - PullRequest
0 голосов
/ 18 декабря 2008

У меня есть этот textBox, который запускает ajax-запрос, используя jQuery:

<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>

Все отлично работает. Единственная проблема, с которой я столкнулся, заключается в том, что когда я обновляю свой priView formView для сохранения этой записи, я не вижу значения, установленного для этого раскрывающегося списка. Поскольку я заполняю этот раскрывающийся список на стороне клиента, я полагаю, что ASP.NET теряет отслеживание этого ....

У кого-нибудь есть идеи?

Очевидно, что когда я включаю / выключаю свойство EnableEventValidation для этой страницы, я иногда получаю правильное значение .....

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 декабря 2008

Вы должны создать скрытое поле для хранения этого значения. Обновите это HiddenField в вашем Javascript, а затем прочитайте его на стороне сервера. Кроме того, если у вас EventValidation = true и вы измените элементы в раскрывающемся списке, вы получите известные исключения.

0 голосов
/ 18 декабря 2008

Это может не быть проблемой ... но вы проверяете наличие Page.IsPostBack в вашей Page_Load?

Я совершал эту ошибку слишком много раз.

Если вы загружаете этот выпадающий элемент управления из Page_Load, и вы не проверяете if (! Page.IsPostback) Вы перезагрузите контроль. Затем, когда вы получите значение из раскрывающегося списка ... значение исчезнет, ​​поскольку вы перезагрузили раскрывающийся список.

...