返回首页

调用从JavaScript代码隐藏功能:简介
我一直在寻找在CodeProject上关于这同一主题的文章,并不能找到这正是,所以我希望这可以帮助别人。
作为这篇文章的标题说,今天我想分享了如何从JavaScript中调用,或者换句话说中的函数或方法的代码隐藏,运行一些从客户端调用服务器端代码,然后更新我们的网站页面。背景
我需要一些ASPX页面添加一些功能,使他们看起来更像是一个桌面应用程序,更加适应。的事情,我不想写在JavaScript功能。我想要实现的东西有点复杂,但因为我已经在代码隐藏编码,我想我会尝试重写它,如果它在JavaScript可以调用一个函数或方法(在这种情况下)。简单的场景
让我们想象下面这个简单的方案,目的只是为了显示我们如何才能实现我们的目标。假设我们有两个文本框:改为txtName和txtLastName。我们希望用户写他的全名,然后迎接他的消息,当最后一个文本框失去焦点。
我们可以很容易地做到这一点,在所有JavaScript,但记住,这仅仅是演示了如何调用一个服务器端的方法从客户端和更新我们的网页的目的。使用代码
确定。让我们的ASPX页面添加三个文本框:

<asp:TextBox ID="txtName" runat="server"></asp:TextBox>

<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>

<asp:TextBox ID="txtMsg" runat="server"></asp:TextBox>

现在,我们体内的标签,让我们添加一些JavaScript:{C}
我们刚刚创建的三个功能:迎:接收改为txtName,txtLastName和txtMsg文本框的ClientID。然后,它会改为txtName和txtLastName,将其价值的对象,并调用代码隐藏功能quot; greetUserquot。我们传递给该函数的四个值:我们已经由串联改为txtName和txtLastName值,如果一切OK,这将被称为的功能,如果事情失败,被称为的函数,它是,了全名,我们可以通过无论我们希望在最后一个参数,在这种情况下,txtMsg文本框的ClientID。请注意,"greetUserquot;是我们的后台代码,我们使用PageMethods来访问它的功能和。GreetSuccess的功能是,如果一切OK,被称为是。收到的代码隐藏功能和参数的结果是:txtMsg文本框的ClientID,所以我们可以得到对象本身并分配给它的代码隐藏功能作为其值的结果。GreetFailed:作为GreetSuccess接收相同的两个参数。在这种情况下,我们只是要显示发生错误的警报。
现在,让我们来看看我们后面的代码。首先,在我们的Page_Load方法中,我们将添加:
If Page.IsPostBack = False Then

    txtLastName.Attributes.Add("onblur", "javascript:greet('" & _

       txtName.ClientID & "','" & txtLastName.ClientID & "','" & _

       txtMsg.ClientID & "')")

End If

为什么我分配的属性quot; onblurquot;我们的txtLastName文本框,在我们的代码,而不是直接在ASPX页面做呢?只是用于演示。你可以从ASPX页面中添加这个属性,但如果你有一个更复杂的情况,比方说,一个GridView,或与DataTemplates DataList的,或者如果你是动态创建控件...例如,那么你可以得到控制GridView_DataBound方法中的代码,或在功能,您创建您的动态布局的需要,并调用JavaScript函数的方式,它是上面显示。
确定,这里涉及的重要组成部分的文章。背后的功能,我们是从JavaScript调用的代码:
<System.Web.Services.WebMethod()> _

Public Shared Function greetUser(ByVal fullName As String) As String

    Return "Welcome " & fullName & "!"

End Function

请注意,我们给这个函数System.Web.Services.WebMethod属性,这是我们之所以能访问这个JavaScript函数使用PageMethods。在这个函数中,我们接收的全名,我们通过加入我们的quot改为txtName和txtLastName值的时候; Greetquot; JavaScript函数。最后的话
我想就是这样。这是一个非常简单的情况,但真正复杂的操作,你可以认为一个GridView内。与以往一样,请随时离开你的意见,问题,建议,或任何你想告诉。您还可以读取
阅读!

回答

评论会员:游客 时间:2012/01/27
我得到一个JavaScript的运行时错误错误:PageMethodsundeifned
。AspDotNetDev
评论会员:游客 时间:2012/01/27
您好,AspDotNetDev说,我忘了说,你必须EnablePageMethods在您的脚本管理。设置该属性为true,它会得到解决。我想更新本文示例项目和截图。对不起NBSP感谢这个错误:!|AspDotNetDev
仅供参考,论坛是一个伟大的地方要问文章写作的问题
帮助brotha出和投票。我真的不知道,你的文章添加到所有。

另外,我没有看到您的文章或事实EnablePageMethods需要设置为true,页面方法为了工作提到了的ScriptManager。

最后,您不包括下载。虽然你可能无法使用文章提交向导,您的文章已被编辑后,您仍然可以通过电子邮件将您的文件代码项目,他们更新为您的文章。我想你也可以使用的文章上传表单。你可以阅读有关这些选项{A3}的都多。
[{A4}
评论会员:奥马尔Gamil 时间:2012/01/27
仅供参考?这是什么意思?
无论如何,正如我在文章中解释,我找了一个类似的解决方案甚至内CodeProject.com,我什么也没找到,但论坛的主题... ...但没有articule被发现与搜索类似我文章的标题。因此,所以我学会了自己写这篇分享

你是完全正确的,我没有提到的EnablePageMethods属性的ScriptManager,铸成大错。我会更新的文章。感谢提醒。但是,有关代码示例,因为我已经回答给其他人,我会在我的下一篇文章下载,但现在是不可能为我准备的,因为时间限制的示例代码。 NBSP

Thahks
评论会员:Pranay蛙 时间:2012/01/27
仅供参考手段"为了您的信息!"。你可以把它作为一种过渡,帮助读者轻松进入一个念头(类似"反正"在你的句子,上面开始)。我刚才也说:"只是为了让你知道。"

nereo.lopez写道:"但是,有关代码示例,因为我已经回答给其他人,我会在我的下一篇文章下载,但现在是不可能为我准备的,因为时间限制的示例代码

我建议,而不是使花药的文章,你利用这段时间来更新这篇文章的示例代码。但是,这完全取决于你,当然,
{A4}
评论会员:fcis2010 时间:2012/01/27
会一直优秀,如果你有包括下载整个项目,然而巨大的努力,谢谢你;]
评论会员:fcis2010 时间:2012/01/27
你是完全正确的。我将在下一次!感谢
评论会员:!cws2_na 时间:2012/01/27
感谢分享
新的文章:{A6}
我的博客:{A7}
评论会员:mutex_semaphore 时间:2012/01/27
{S0}
评论会员:哈米斯 时间:2012/01/27
?我可以在JavaScript中使用这种机制来访问SQL数据库
假设我想这些值插入到数据库中。我应该在哪里写insert语句?我可以写在JavaScript中的INSERT语句?
太感谢你了
评论会员:克里富尼耶 时间:2012/01/27
喜 这是一个很好的的问题!时需要做复杂的事情,我只用这个"绝招",而将是一个通过javascript的痛苦。我从未有过的情况下,承诺从JavaScript命令,所以我从来没有尝试过直接。如果你想插入或更新到您的SQL数据库的东西,你可以调用的代码隐藏的方法,在这篇文章中显示您的JavaScript。
不要毫不犹豫地回答,如果你有进一步的问题或需要更具体的帮助{S0}
希望帮助