ASP.NET получить значение текстового поля, заполненное из JavaScript в событии Load или Unload - PullRequest
0 голосов
/ 07 июня 2011

просто, у меня есть текстовое поле ASP.net внутри веб-управления он заполняется функцией javascript внутри той же разметки webcontrol

проблема в том, что мне нужно прочитать это значение из серверных событий веб-контроля пробовал page_load, page_unload ... но все они срабатывают до выполнения функции javascript.

Я даже попытался переместить код JS в отдельный файл Script и добавил ссылку на него. но опять же все равно.

когда я пытаюсь вызвать эту функцию, чтобы заполнить текстовое поле, используя:

Page.ClientScript.RegisterClientScriptBlock //which calls it to early
Page.ClientScript.RegisterStartupScript //which calls it too late ;P

, но снова выполняется до того, как ссылка Script будет включена в рендер элемента управления.

какие-либо предложения, кроме регистрации всего кода JS с помощью registerClientScriptBlock?

Я уверен, что мне не хватает чего-то важного, связанного с жизненным циклом веб-элемента управления, поэтому, пожалуйста, просветите меня и извините за длинную болтовню. заранее спасибо

1 Ответ

0 голосов
/ 07 июня 2011

Как и предполагал Тим, это, вероятно, лучше сделать на сервере перед выводом.

Однако, чтобы ответить на ваш вопрос, вы могли бы создать веб-сервис, который клиент мог бы вызывать для уведомления серверной части о вычисленномзначение.Вот очень грубый пример:

NewWebService.asmx:

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void SaveTextBox(string textValue)
{
    <%-- Save the value here --%>
}

YourPage.html:

// Requires jQuery.  
// Code can be refactored to use any library or none at all, if you like

<script>
$("#textBoxId").change(function() {

    var textValue = this.value;

    $.ajax({
        type: "POST",
        url: "NewWebSerivce.asmx/SaveTextBox",
        data: textValue,
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            // do nothing
        }
    });
});
</script>
...