开发者

ASP.NET 2.0 C# AjaxPro RegisterTypeForAjax

I am wondering if RegisterTypeForAjax isn't working correctly. I am getting the error noted at the end of the code block below. Sample is from here: http://www.ajaxtutorials.com/asp-net-ajax-quickstart/tutorial-introduction-to-ajax-in-asp-net-2-0-and-c/

Any ideas as to why I'm getting this error? Thanks.

ASP .NET 2.0 C#

Here is the code-behind:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using AjaxPro;


namespace WebApplication1
{
    public partial class Ajax_CSharp : System.Web.UI.Page
    {
        protected override void OnInit( EventArgs e )
        {
            base.OnInit( e );
            Load += new EventHandler( Page_Load );
        }

        protected void Page_Load( object sender, EventArgs e )
        {
            Utility.RegisterTypeForAjax( typeof( Ajax_CSharp ) );
        }

        [ AjaxMethod( HttpSessionStateRequirement.ReadWrite ) ]
        public string GetData()
        {
            // method gets a row from the db and returns a string.
        }
}

Here is the ASPX page:

<%@ Page Language="C#" AutoEventWireup="false" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Ajax_CSharp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
       function GetData()
       {
          var response;
          Ajax_CSharp.GetData( GetData_CallBack );
       }

       function GetData_CallBack( response )
       {
          var response = response.value;

          if ( response == "Empty" )
          {
             alert( "No Record Found." );
          }
          else if ( response == "Error" )
          {
             alert( "An Error Occurred in Accessing the Database !!!" );
          }
          else
          {
             var arr = response.split( "~" );
             var empID = arr[0].split( "," );
             var empName = arr[1].split( "," );

             document.getElementById( 'dlistEmployee' ).length = 0;

             for ( var i = 0; i < empID.Length; i++ )
             {
                var o = document.createElement( "option" );
                o.value = empID[i];
                o.text = empName[i];
                document.getElementById( 'dlistEmployee' ).add( o );
             }
          }
       }

       function dodisplay()
       {
          var selIndex = document.getElementById( "dlistEmployee" ).selectedIndex;
          var empName = document.getElementById( "dlistEmployee" ).options( selIndex ).text;
          var empID = document.getElementById( "dlistEmployee" ).options( selIndex ).value;

          document.getElementById( "lblResult" ).innerHTML = "You have selected " + empName + " (ID: " + empID + " )";
       }

    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div style="text-align: center;">
        <input id="btnGetData" 
               onclick="GetData();" 
               type="button" 
               value="To Get Employee Data From DB" style="width: 203px" />
        &nbsp;&nbsp;
        <asp:DropDownList id="dlistEmployee" OnTextChanged="dodisplay();" />
        <asp:Label id="lblResult" runat="server" Text="No Record Selected" />
    </div>
    </form>
</body>
</html>

Run it and click on the button and I get this error:

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1开发者_StackOverflow中文版.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; MS-RTC LM 8) Timestamp: Mon, 26 Apr 2010 17:22:44 UTC

Message: 'Ajax_CSharp' is undefined Line: 13 Char: 11 Code: 0 URI: http://localhost:4678/Default.aspx


Try using the full name.

In this case change:

Ajax_CSharp.GetData( GetData_CallBack );

to

WebApplication1.Ajax_CSharp.GetData( GetData_CallBack );

What is happening is that page has no idea what Ajax_CSharp is. When using AjaxPro you always should use the FullName of a class, which is Namespace.ClassName.


For everyone still having this problem. You need to add a < form > html tag inside your page. Not necessary to include any full name tag, or any input inside de form.

<form id="Form1" method="post" runat="server">

Verify if you have already add the handlers in the web.config

<httpHandlers> <add verb="POST,GET" path="ajaxPro/*.ashx" type="Ajax.PageHandlerFactory, AjaxPro" /> </httpHandlers>

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜