有谁知道如何使用javascript调用服务器端c#方法?我需要做的是如果选择“取消”则停止导入,或者如果选择“确定”则继续导入。我正在使用Visual
Studio 2010和C#作为编程语言
这是我的代码:
private void AlertWithConfirmation()
{
Response.Write(
"<script type=\"text/javascript\">" +
"if (window.confirm('Import is currently in progress. Do you want to continue with importation? If yes choose OK, If no choose CANCEL')) {" +
"window.alert('Imports have been cancelled!');" +
"} else {" +
"window.alert('Imports are still in progress');" +
"}" +
"</script>");
}
PageMethod是Asp.Net
AJAX的一种更轻松,更快速的方法。通过释放AJAX的功能,我们可以轻松地改善用户体验和Web应用程序的性能。我最喜欢AJAX的东西之一就是PageMethod。
PageMethod是一种可以在Java脚本中公开服务器端页面的方法的方法。这带来了很多机会,我们可以执行许多操作,而无需使用缓慢而烦人的回发。
在这篇文章中,我将展示ScriptManager和PageMethod的基本用法。在此示例中,我将创建一个“用户注册”表单,用户可以在其中使用其电子邮件地址和密码进行注册。这是我要开发的页面的标记:
<body>
<form id="form1" runat="server">
<div>
<fieldset style="width: 200px;">
<asp:Label ID="lblEmailAddress" runat="server" Text="Email Address"></asp:Label>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
<asp:Label ID="lblPassword" runat="server" Text="Password"></asp:Label>
<asp:TextBox ID="txtPassword" runat="server"></asp:TextBox>
</fieldset>
<div>
</div>
<asp:Button ID="btnCreateAccount" runat="server" Text="Signup" />
</div>
</form>
</body>
</html>
要设置页面方法,首先必须在页面上拖动脚本管理器。
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
还要注意,我已经改变了EnablePageMethods="true"
。
这将告诉ScriptManager我将要从客户端调用PageMethods。
现在,下一步是创建服务器端功能。
这是我创建的函数,该函数验证用户的输入:
[WebMethod]
public static string RegisterUser(string email, string password)
{
string result = "Congratulations!!! your account has been created.";
if (email.Length == 0)//Zero length check
{
result = "Email Address cannot be blank";
}
else if (!email.Contains(".") || !email.Contains("@")) //some other basic checks
{
result = "Not a valid email address";
}
else if (!email.Contains(".") || !email.Contains("@")) //some other basic checks
{
result = "Not a valid email address";
}
else if (password.Length == 0)
{
result = "Password cannot be blank";
}
else if (password.Length < 5)
{
result = "Password cannot be less than 5 chars";
}
return result;
}
要告诉脚本管理器该方法可通过javascript访问,我们需要确保两件事:
第一:该方法应为“公共静态”。
第二:在上面的代码中编写的方法上方应该有一个[WebMethod]标记。
现在,我创建了创建帐户的服务器端功能。现在我们必须从客户端调用它。这是我们如何从客户端调用该函数的方法:
<script type="text/javascript">
function Signup() {
var email = document.getElementById('<%=txtEmail.ClientID %>').value;
var password = document.getElementById('<%=txtPassword.ClientID %>').value;
PageMethods.RegisterUser(email, password, onSucess, onError);
function onSucess(result) {
alert(result);
}
function onError(result) {
alert('Cannot process your request at the moment, please try later.');
}
}
</script>
要调用我的服务器端方法“注册用户”,ScriptManager会生成一个代理函数,该函数可在PageMethods中使用。
我的服务器端函数有两个参数,即电子邮件和密码,之后,我们还必须提供两个函数名,如果方法成功执行(第一个参数,即onSucess)或方法失败(第二个参数,即结果),则将运行两个函数名。
现在一切似乎都准备就绪,现在我已OnClientClick="Signup();return false;"
在“注册”按钮上添加了内容。所以这是我的aspx页面的完整代码:
<!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></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<fieldset style="width: 200px;">
<asp:Label ID="lblEmailAddress" runat="server" Text="Email Address"></asp:Label>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
<asp:Label ID="lblPassword" runat="server" Text="Password"></asp:Label>
<asp:TextBox ID="txtPassword" runat="server"></asp:TextBox>
</fieldset>
<div>
</div>
<asp:Button ID="btnCreateAccount" runat="server" Text="Signup" OnClientClick="Signup();return false;" />
</div>
</form>
</body>
</html>
<script type="text/javascript">
function Signup() {
var email = document.getElementById('<%=txtEmail.ClientID %>').value;
var password = document.getElementById('<%=txtPassword.ClientID %>').value;
PageMethods.RegisterUser(email, password, onSucess, onError);
function onSucess(result) {
alert(result);
}
function onError(result) {
alert('Cannot process your request at the moment, please try later.');
}
}
</script>
问题内容: 我已经创建了一个applet,并且将要从Web项目上的HTML页面访问applet方法。 这里我的小程序看起来像: 我的HTML页面如下所示: 但是,当我单击单选按钮时,浏览器将挂起,并且无法访问applet方法。 我的applet类位于默认目录中,而HTML位于WebContent文件夹中。我应该更改我的代码吗? 问题答案: 问题是语句检查: 这与JavaScript不完全一样,因为
问题内容: 我有一个Java类:: 这给了我一个Json数组。现在,我想在JavaScript中一次又一次调用此类的method()以获得新值,因为我更新了我的数据库。我有一个数据网格,当页面首次加载此json数组中的一组值时,该网格运行良好。但是如何使用Ajax刷新数据。或者如何使用Ajax调用method()以便当我单击页面上的按钮时刷新数据。我在Java脚本中调用此方法的代码是:: 我在通过
问题内容: 如何使用链接调用JavaScript代码? 问题答案: 要么 编辑: 上面的回答确实不是一个好的解决方案,自从我最初发布以来,已经学到了很多有关JS的知识.
问题内容: 如果重写了JavaScript中的原型方法,则可以调用该基础方法吗? 问题答案: 我不明白您到底想做什么,但是通常按照以下方式完成特定于对象的行为:
问题内容: 我们如何使用IE 8调试JavaScript? 在更新到IE 8后,无法使用Visual Studio进行JavaScript调试。 问题答案: 我今天发现,我们现在可以使用IE 8中集成的开发人员工具栏插件来调试Javascript。 单击选项卡右侧工具栏上的 ▼工具 。 选择 开发人员工具 。开发人员工具对话框应打开。 单击对话框中的 脚本 选项卡。 单击 开始调试 按钮。 您可以
问题内容: Java具有允许Java调用javascript的脚本管理器,如下所示: 我的问题是,如果我有sayHi()函数,是否可以通过脚本引擎使用javascript来调用Java函数?谢谢。 问题答案: 从JavaDocs迅速被黑客入侵。 输出量