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
來自http://hi.baidu.com/chen839357/blog/item/42bb9594c12d4047d0135e60.html