0

我已经启用了AutoPostBack我的表单文本框之一的属性,根据w3 学校的说法,它应该只在我按 enter 或 tab 时触发回发。

__doPostBack()鉴于用户对 javascript 提示的回答,我还调用了on pageLoad。当我这样做时,这Request.Form['__EventTarget']不是我在调用中设置的__doPostBack

对我来说真正的问题是,如果我将 TextBox 的 AutoPostBack 属性设置为 false,页面加载 __doPostBack 调用的问题就会消失。这不是我预期的行为。关于导致问题的任何想法?为什么启用 AutoPostBack 会有任何影响?

这是一些代码:

asp:TextBox runat="server" ID="userName" OnTextChanged="UpdateTable" AutoPostBack="true"
script type="text/javascript"
        //![CDATA[
        var theForm = document.forms['form1'];
        if (!theForm) {
            theForm = document.form1;
        }
        function __doPostBack(eventTarget, eventArgument) {
            if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
                theForm.__EVENTTARGET.value = eventTarget;
                theForm.__EVENTARGUMENT.value = eventArgument;
                theForm.submit();
            }
        }
        //]]
/script
input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value=""
input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value=""
input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" 
function jsPrompt(name) {
  var ans = confirm('really follow ' + name + '?');
  if (ans) {
    __doPostBack('follow', name);
  }
}

然后在代码隐藏页面中:

if (Request.Form["__EventTarget"] == "follow")
  followPerson(Request.Form["__EventArgument"]);                

但是,我不断得到它Request.Form["__EventTarget"]","并且我已经在调试器中逐步完成了 javascript。就在之前form.submit(),争论不是","

4

2 回答 2

1

好的...从哪里开始。你到底想在这里完成什么?我想不出在 ASP.NET 中查看 Request.Form["__EventTarget"] 的正当理由。我唯一一次看到这种情况是当一个老派 ASP 或 PHP 程序员第一次学习 ASP.NET 并且还没有完全掌握作为 ASP.NET 基础的事件驱动模型时。

另外,当您说您正在调用 __doPostBack() 时,您是什么意思?您也不需要手动执行此操作。如果您真的想在通常不会发生的情况下在 javascript 中创建回发,则需要使用ClientScriptManager.GetPostBackEventReference ()。因此,使用此方法并将您的 TextBox 传递给它以获取正确的回发代码。然后您可以在客户端脚本中的任何位置执行它。

希望这可以帮助。如果我误解了这个场景,请添加评论,我会再试一次。:)

于 2010-09-08T22:59:10.913 回答
0

您正在使用的代码在哪里?确保您使用的是类似的东西:

var element = $get("<%= textbox1.ClientID %>");
__doPostBack(element.name, ''); // second param is command name/argument separated by $

HTH。

于 2010-09-08T18:54:09.807 回答