使用JavaScript调用asp.net代码
1.如何在javascript访问C#变量?
方法一:使用<%=%
<input id="Button3" type="button" value="js调用c#变量" onclick="return Button3_onclick()" />
function Button3_onclick()
{
alert('我的名字:'+ '<%=name %>');
}
cs代码中的定义:protected string name = "chenlaing";
方法二:使用Hidden隐藏控件
<input id="Hidden1" runat="server" type="hidden" />
在cs代码中给该隐藏控件赋值: Hidden1.Value = "陈亮";
function Button3_onclick()
{
alert(document.getElementById("Hidden1").value);
}
方法三:在cs代码中注册js脚本
string tmp = "陈全用";
ClientScript.RegisterClientScriptBlock(this.GetType(), null, "<script language='javascript'>var temp='" + tmp + "'</script>");
function Button3_onclick()
{
alert(temp);
}
2. 在javascript访问C#函数:
方法一:使用<% %>
<script type="text/javascript">
var s = "<%=ShowBehindInfo("chenliang")%>";
document.write(s);
</script>
cs后台代码:
protected string ShowBehindInfo(string name)
{
return "姓名:" + name;
}
方法二:使用<% %>
<script type="text/javascript">
document.write("<%ShowResult();%>");
</script>
cs后台代码:
protected void ShowResult()
{
Response.Write("我是陈全勇气");
}
方法三:
<style>
.btn
{
display:none;
}
</style>
<asp:Button ID="Button1" runat="server" CssClass="btn" Text="Button" OnClick="Button1_Click" />
<div onclick="invokeCharp()">点击调用aspx.cs的代码</div>
以下js代码将调用后台的cs代码
function invokeCharp()
{
document.getElementById("Button1").click();
}
通过js调用的代码
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("被js调用的代码");
}
方法四:
<input type="hidden" name="txtFunName">
<input id="Button2" type="button" value="调用cs函数" onclick="return Button2_onclick()" />
//将调用的信息存入隐藏控件中 在提交表单
function Button2_onclick()
{
document.all.txtFunName.value="show";
document.forms[0].submit();
}
//后台cs代码
protected void Page_Load(object sender, EventArgs e)
{
string strFunName = Request.Form["txtFunName"] != null ? Request.Form["txtFunName"] : "";
//根据传回来的值决定调用哪个函数
switch (strFunName)
{
case "show":
enter(); //调用该函数
break;
default:
//调用默认函数
break;
}
}
方法五:
使用__doPostBack();
<input id="Button6" type="button" value="调用服务端的button" onclick="Button6_onclick()" />
<asp:Button ID="btn" runat="server" Text="Button" OnClick="btn_Click" />
<asp:CheckBox ID="CheckBox1" AutoPostBack="true" runat="server" />
function Button6_onclick()
{
var res = "chenliang";
__doPostBack('btn','chenlinng');
}
//以上脚本将调用以下事件代码
protected void btn_Click(object sender, EventArgs e)
{
string target = Request.Params["__EVENTTARGET"];
string args = Request.Params["__EVENTARGUMENT"];
Response.Write(target + "<Br>" + args);
}
__doPostBack解释:
是一个纯粹并且是非常简单的javascript函数
如以上代码,如果ASPX页面有包含asp:LinkButton或者带有AutoPostBack属性且其值为true的服务器控件时
ASP.NET会自动为页面生成下面的脚本
实际上调用__doPostBack函数
也就是将触发回发的控件(第一个参数)及相关参数(第二个参数)付给两个页面的隐藏控件
然后提交表单;
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
function __doPostBack(eventTarget, eventArgument)
{
if (!theForm.onsubmit || (theForm.onsubmit() != false))
{
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
而在后台事件代码中可以
通过Request.Form[“__EVENTTARGET”]获取到触发页面PostBack的事件源(控件的ID)
但Button和ImageButton触发的PostBack无法通过这种方式获取到它们的ID
方法一:使用<%=%
<input id="Button3" type="button" value="js调用c#变量" onclick="return Button3_onclick()" />
function Button3_onclick()
{
alert('我的名字:'+ '<%=name %>');
}
cs代码中的定义:protected string name = "chenlaing";
方法二:使用Hidden隐藏控件
<input id="Hidden1" runat="server" type="hidden" />
在cs代码中给该隐藏控件赋值: Hidden1.Value = "陈亮";
function Button3_onclick()
{
alert(document.getElementById("Hidden1").value);
}
方法三:在cs代码中注册js脚本
string tmp = "陈全用";
ClientScript.RegisterClientScriptBlock(this.GetType(), null, "<script language='javascript'>var temp='" + tmp + "'</script>");
function Button3_onclick()
{
alert(temp);
}
2. 在javascript访问C#函数:
方法一:使用<% %>
<script type="text/javascript">
var s = "<%=ShowBehindInfo("chenliang")%>";
document.write(s);
</script>
cs后台代码:
protected string ShowBehindInfo(string name)
{
return "姓名:" + name;
}
方法二:使用<% %>
<script type="text/javascript">
document.write("<%ShowResult();%>");
</script>
cs后台代码:
protected void ShowResult()
{
Response.Write("我是陈全勇气");
}
方法三:
<style>
.btn
{
display:none;
}
</style>
<asp:Button ID="Button1" runat="server" CssClass="btn" Text="Button" OnClick="Button1_Click" />
<div onclick="invokeCharp()">点击调用aspx.cs的代码</div>
以下js代码将调用后台的cs代码
function invokeCharp()
{
document.getElementById("Button1").click();
}
通过js调用的代码
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("被js调用的代码");
}
方法四:
<input type="hidden" name="txtFunName">
<input id="Button2" type="button" value="调用cs函数" onclick="return Button2_onclick()" />
//将调用的信息存入隐藏控件中 在提交表单
function Button2_onclick()
{
document.all.txtFunName.value="show";
document.forms[0].submit();
}
//后台cs代码
protected void Page_Load(object sender, EventArgs e)
{
string strFunName = Request.Form["txtFunName"] != null ? Request.Form["txtFunName"] : "";
//根据传回来的值决定调用哪个函数
switch (strFunName)
{
case "show":
enter(); //调用该函数
break;
default:
//调用默认函数
break;
}
}
方法五:
使用__doPostBack();
<input id="Button6" type="button" value="调用服务端的button" onclick="Button6_onclick()" />
<asp:Button ID="btn" runat="server" Text="Button" OnClick="btn_Click" />
<asp:CheckBox ID="CheckBox1" AutoPostBack="true" runat="server" />
function Button6_onclick()
{
var res = "chenliang";
__doPostBack('btn','chenlinng');
}
//以上脚本将调用以下事件代码
protected void btn_Click(object sender, EventArgs e)
{
string target = Request.Params["__EVENTTARGET"];
string args = Request.Params["__EVENTARGUMENT"];
Response.Write(target + "<Br>" + args);
}
__doPostBack解释:
是一个纯粹并且是非常简单的javascript函数
如以上代码,如果ASPX页面有包含asp:LinkButton或者带有AutoPostBack属性且其值为true的服务器控件时
ASP.NET会自动为页面生成下面的脚本
实际上调用__doPostBack函数
也就是将触发回发的控件(第一个参数)及相关参数(第二个参数)付给两个页面的隐藏控件
然后提交表单;
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
function __doPostBack(eventTarget, eventArgument)
{
if (!theForm.onsubmit || (theForm.onsubmit() != false))
{
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
而在后台事件代码中可以
通过Request.Form[“__EVENTTARGET”]获取到触发页面PostBack的事件源(控件的ID)
但Button和ImageButton触发的PostBack无法通过这种方式获取到它们的ID
来自http://hi.baidu.com/chen839357/blog/item/42bb9594c12d4047d0135e60.html