我有这个aspx:
<body>
<div>
<script type="text/javascript">
function NewPage() {
document.location.href = "http://www.nextservice.pt/"
}
</script>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Btn2" runat="server" Text="OK" onclick="Button2_Click" />
CODE1: <asp:Label ID="Label1" runat="server" Text="Label" ForeColor="#CC0000" />
</form>
</div>
</body>
并且我正在使用 Web 表单,并且我不会在 aspx.cs 上调用此按钮
public partial class SITE_TESTER : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button2_Click (object sender, EventArgs e)
{
string code = TextBox1.Text.ToString();
if (!verifyCode(code)) // comparing users from table
{
Label1.Text = "Not Exists"; //for invalid code
}
else
{
Label1.Text = "Exist"; //for sucsseful code
/*
I Wont call my JavaScript Function here!!!!
*/
}
}
}
最佳答案
您可以通过以下方式从asp.net中的服务器端调用javascript方法:
protected void button_Click(object sender , EventArgs e)
{
string jsMethodName= = "NewPage()";
ScriptManager.RegisterClientScriptBlock(this, typeof(string), "uniqueKey", jsMethodName, true);
//or
//ScriptManager.RegisterStartupScript(this, GetType(), "NewPage()", false);
}
您可以使用ScriptManager.RegisterStartupScript
或ScriptManager.RegisterClientScriptBlock
所以两者之间的区别解释如下:
假设我们有一个带有以下表单标记的 .aspx 页面:(行 没有。仅供引用)
1. <form id="Form1" runat="server">
2. ..
3. ..
4. ..
5. </form>
现在让我们看看每种方法的主要区别:
A.
Page.RegisterClientScriptBlock()
将插入脚本的 block
2号线之前。
Page.RegisterStartupScript()
将在第 4 行之后插入脚本。
B.
Page.RegisterClientScriptBlock()
通常应该用于脚本
封装在函数中。 (因此出现了“ block ”这个词)
Page.RegisterStartupScript()
可用于任何脚本,即使它是
不在函数中。
C.
Page.RegisterClientScriptBlock()
应用于以下功能:
不需要在页面加载时运行。
Page.RegisterStartupScript()
应用于必须运行的脚本
页面加载。
D.
Page.RegisterClientScriptBlock()
应该用于执行以下操作的脚本
不需要创建表单元素。
Page.RegisterStartupScript()
应用于需要
已创建的表单元素并使用对它们的引用。
请注意,所有 4 个差异本质上都与每个差异相关 其他(它们建立在前一个的基础上)。差异放在一行中 有时可能过于微妙。
关于javascript - 使用按钮在 aspx.cs 上调用 JavaScript 函数(以 aspx 形式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14578911/