Alo*_*n M 3 javascript c# asp.net jquery webforms
所以,我有一个aspx页面,看起来像这样:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想知道,我如何编写将从我的C#代码调用函数的JavaScript(例如jQuery)代码.让我们说这是我的C#方法:
protected void XXX(object sender, EventArgs e)
{
Response.Redirect("pagewho?");
}
Run Code Online (Sandbox Code Playgroud)
再次感谢,Alon.:)
编辑:
这是我正在使用的完整代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
<script type="text/javascript">
validateStuff = function () {
var isValid = true;
var txt = document.getElementById("TextBox1");
if (txt) {
if (txt.value.toLower() != "james") {
isValid = false;
}
}
//perform validation and return true/false
return isValid;
}
</script>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" OnClientClick="return validateStuff();" OnClick="Button1_Click" />
<br />
<br />
<asp:TextBox ID="TextBox1" runat="server" Height="25px" Width="135px"></asp:TextBox>
<br />
<br />
<br />
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,无论我在文本框中连接什么,它都返回true.任何帮助?
您可以__doPostBack从脚本中使用,并在后面的代码中使用RaisePostBackEvent方法来执行服务器端逻辑.如果您正在寻找重定向,这可能是最好的方法.
编辑
如果您希望在单击按钮时在JavaScript中进行一些验证,请使用OnClientClick执行JavaScript验证,如果验证成功则返回true.
<asp:Button ID="Button1" runat="server" OnClientClick="return validateStuff();" OnClick="Button1_Click" />
Run Code Online (Sandbox Code Playgroud)
您的JavaScript验证:
validateStuff = function(){
var isValid = true;
var txt = document.getElementById("<%=TextBox1.ClientID%>");
if (txt.value.toLower() != "james"){
isValid = false;
}
return isValid;
}
Run Code Online (Sandbox Code Playgroud)
如果validateStuff函数返回true,则会发生回发,您可以在按钮单击事件中处理保存/更新逻辑:
protected void Button1_Click(object sender, EventArgs e)
{
//save some stuff to the database
string txtValue = TextBox1.Text.Trim();
}
Run Code Online (Sandbox Code Playgroud)
在JavaScript中:
redirectToAnotherPage = function(){
__doPostBack("<%=SomeServerControl.ClientID%>", "someArgument");
}
Run Code Online (Sandbox Code Playgroud)
在代码隐藏中:
protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
//call the RaisePostBack event
base.RaisePostBackEvent(source, eventArgument);
Response.Redirect("anotherpage.aspx");
}
Run Code Online (Sandbox Code Playgroud)
如果你要做的就是将用户带到另一个页面,你也可以这样做:
redirectToAnotherPage = function(){
window.location.href = "somepage.aspx";
}
Run Code Online (Sandbox Code Playgroud)
为了让客户端代码调用服务器端代码,您可能需要使用AJAX.由于你提到了jQuery,它有一个非常方便的功能来进行调用.但是从JavaScript调用只是故事的一半,你也需要在服务器上监听该调用.如果您打算使用jQuery(而不是其他选项,例如AJAX Toolkit),那么我建议不要将该方法"放在页面上",而应该使用它自己的资源.我建议使用HttpHandler来响应AJAX调用.
这里要记住的关键是,这与仅仅回发到页面的结构有何不同.使用AJAX,这些调用在页面内异步发生.所以你应该知道的第一件事是Response.Redirect()在这种情况下不起作用.它将重定向AJAX调用,而不是当前打开的页面.可能有一些方法可以在ASP.NET中使用post-back方法来解决这个问题,但我不得不问......如果您所做的只是重定向那么为什么不在客户端进行呢?JavaScript有很多功能.你可以很容易地从邮件服务器上重定向,但是从JavaScript中为什么不只是让JavaScript做到这一点?
| 归档时间: |
|
| 查看次数: |
23038 次 |
| 最近记录: |