65.9K
CodeProject 正在变化。 阅读更多。
Home

通过客户端 jQuery 调用 C# 方法

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.59/5 (17投票s)

2011 年 9 月 7 日

CPOL

2分钟阅读

viewsIcon

182143

这将帮助我们在客户端使用 JQuery 调用后台代码中定义的方法

引言

本文档介绍了如何在代码隐藏文件中定义方法,并从客户端调用该方法。JQuery 使操作变得简单。实现起来非常容易。

背景

过去,我们知道的一种方法是将方法作为 WebMethod 添加,如果想从客户端调用代码隐藏文件中的方法。使用这种方法,我们可以在不将方法作为 WebMethod 调用的情况下实现它。我们不能“直接”从客户端代码调用服务器端代码。原因是出于设计考虑,服务器端代码在服务器端执行,客户端代码在客户端执行。但是有一些解决方法。

Using the Code

在这个例子中,我编写了一个方法,当按下删除键时删除特定的用户。我不想进行回发,所以我希望事件在客户端执行。我在 CS 文件中编写了一个名为 delete 的服务器端方法,并使用 JQuery 从客户端调用它。

创建一个名为 Text.aspx 的页面。现在打开它的 CS 文件,即 Test.aspx.cs 文件,并添加一个 private 方法来删除记录。在这个方法中,IDUserId 参数来自客户端。因此,您可以学习如何从客户端获取参数。

这是我在 CS 文件中名为 DeleteRec 的方法。

private void DeleteRec()
        {
            int ID= Request.Form["ID"].ToString().ToInteger(); 	//parameter send 
							//from clide side
            int UserID = Request.Form["UserID "].ToString().ToInteger();//parameter 
							//send from clide side
	    UserBO lObjUserBO = new UserBO ();
            lObjUserBO .DeleteUser(ID, UserID );
        }

一旦定义了该方法,我们需要在页面加载时调用客户端方法。要在页面加载时调用客户端方法,我们使用 Request.Form["MethodName"] == "客户端方法名”。

这里 DeleteR 是客户端方法名,该方法调用我在服务器端定义的 private 方法。

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                #region Ajax methods
                if (Request.Form["MethodName"] == "DeleteR")// same Method Name 
				// that we are specifying on client side(DeleteR)
                {
                    DeleteRec();// Method defined on the page to delete the record
                    return;
                }
                #endregion
	    }	
        }

现在来看客户端。我们有一个锚标签,我们希望在单击此锚标签时,服务器端编写的方法被调用,并删除从客户端传递参数的记录。

 <a id="adelete">Delete </a>

使用以下脚本在单击此锚标签时调用服务器端方法。这里我的方法名为 DeleteR,它在服务器端页面加载时被调用。我在此方法中发送两个参数,IDUserID

$('#adelete').click(function()
               {
                    var dataToSend={ID:ID,MethodName:'DeleteR',UserID :UserID };

                        var options =
                        {
                            url: '<%=ResolveUrl("~/Test.aspx") %>?x=' + 
				new Date().getTime(),
                            data: dataToSend,
                            dataType: 'JSON',
                            type: 'POST',
                            success: function (response) {
                                window.location.href='<%=ResolveUrl("~/Test1.aspx")%>
				/'+ID;//after sucess will redirect to new page
                               
                            }
                        }
                        $.ajax(options);
               });

如果代码执行成功,它将重定向到名为 Test1.aspx 的新页面。我们甚至可以添加失败后的操作。

关注点

我的客户不希望在删除后看到页面刷新。我已经创建了许多方法,我只是在寻找一种使用相同方法但从客户端进行调用的方法。这真的帮了我。希望对您也有帮助。

© . All rights reserved.