0

我有一个 ASP.Net 应用程序,当我从一个组合更改值时,它必须显示一个标签:

  • 在cs文件中:

     public partial class WebFormAJAXControls : System.Web.UI.Page,System.Web.UI.ICallbackEventHandler
      {
    string _callbackArg;
    
    public void RaiseCallbackEvent(string eventArgument)
    {
        _callbackArg = eventArgument;
    }
    
    public string GetCallbackResult()
    {
        return _callbackArg;
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        //register the name of the client side function that will be called by the server
        string callbackRef = Page.ClientScript.GetCallbackEventReference(this, "args", "ClientCallbackFunction","");
    
        //define a function used by client to call server
        string callbackScript = " function MyServerCall(args){alert ('1'); " + callbackRef + " ; }";
    
        //register the client function to the page 
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyServerCall", callbackScript, true);
    
    }
      }
    
  • 在 aspx 文件中:

      <head runat="server">
         <title></title>
          <script type="text/javascript">
            function ClientCallbackFunction(args) {
              alert(args);
              LabelMessage.innerText = args;
           }
         </script>
      </head>
      <body>
      <form id="form1" runat="server">
       <div>
    
      <asp:DropDownList ID="DropDownListChoice" runat="server" OnChanged="MyServerCall(DropDownListChoice.value)">
         <asp:ListItem>Choise 1</asp:ListItem>
         <asp:ListItem>Choise 2</asp:ListItem>
         <asp:ListItem>Choise 3</asp:ListItem>
      </asp:DropDownList>
      <br /><br />
      <asp:Label ID="labelMessage" runat="server"></asp:Label>
     </div>
       </form>
      </body>
    

当我在组合框中更改选择时,程序不会做任何事情。有人可以告诉我有什么问题吗?

4

2 回答 2

0

这不应该:

function ClientCallbackFunction(args) { 
    alert(args); 
    LabelMessage.innerText = args; 
}

是这样的:

function MyServerCall(args) { 
    alert(args); 
    LabelMessage.innerText = args; 
}

目前您没有可以MyServerCall调用的方法。

你要的方法是OnChange,不是OnChangedLabelMessage以这种方式访问​​也会出错。像这样使用 jQuery 的东西可以解决问题:$('#labelMessage').text(args);

于 2012-10-09T11:10:18.003 回答
0

尝试使用 RegisterStartupScript 注册客户端脚本功能。

例如:Page.ClientScript.RegisterStartupScript(typeof(Page), "MyServerCall", callbackScript, true);

于 2012-10-09T11:22:15.330 回答