__doPostBack не рендерит при обратной передаче - PullRequest
3 голосов
/ 09 сентября 2008

У меня странная проблема.

Я должен использовать GetPostBackEventRefence для принудительной обратной передачи, но он работает в первый раз, после первой обратной передачи функция .NET не отображается ... какие-либо идеи?

Вот что мне не хватает после постбэка:

<script language="javascript" type="text/javascript">
<!--
function __doPostBack(eventTarget, eventArgument) {
    var theform;
    if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
        theform = document.Main;
    }
    else {
        theform = document.forms["Main"];
    }
    theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
    theform.__EVENTARGUMENT.value = eventArgument;
    theform.submit();
}
// -->
</script>

Ответы [ 2 ]

4 голосов
/ 09 сентября 2008

Хорошо, следуя этой идее, я создал фиктивную функцию с обратной ссылкой, и она работает ... хотя это все еще странно, из-за правильного рендеринга в первый раз

this.Page.RegisterClientScriptBlock("DUMMY", "<script language='javascript'>function dummy() { " + this.Page.GetPostBackEventReference(this) + "; } </script>");
3 голосов
/ 09 сентября 2008

Первое, на что я бы обратил внимание - есть ли у вас на странице элементы управления asp (такие как кнопка ссылки, выпадающие списки, которые обычно не генерируют отправку, но требуют обратной передачи), отображаемые на странице. Функция __doPostback будет добавлена ​​на страницу только в том случае, если ASP считает, что это требуется для одного из ваших элементов управления.

Если вы не используете один из них, вы можете использовать:

Page.ClientScript.GetPostBackClientHyperlink(controlName, "")

чтобы добавить функцию на вашу страницу

...