ASP.NET中前臺javascript與後臺代碼調用

轉帖地址:http://student.csdn.net/space.php?uid=26676&do=blog&id=23341

這段時間正好項目這邊有用到前後臺交互的東西,一下的方法做了下試驗,遇到些問題。

我用的webapplication,頁面都套了模板頁。需要彈出一個登陸對話框(我用的是jquery插件,彈出內容放在一個div裏),

用戶登陸後,在頁面中直接顯示用戶當前信息。

問題出現在用戶點擊登陸按鈕後關閉對話框這裏,thickbox插件要求調用叫tb_remove的js方法來關閉對話框。而這個方法放在

RegisterStartupScript方法中一點作用都沒有,直接放在onclientclick裏調用也不行。沒有辦法,只好用了一個html控件,直接掉用

tb_remove函數。結果窗口管了,但是後臺的事件沒法執行了。

使了幾個其他的方法,1 用js把值放在hiddenfield(服務器控件)裏,後臺取,在website類型的例子裏可以取到,但是放在項目中就不行了

用js寫到cookie中,不穩定,有時可以取到值,有時不可以了。而且這樣做還有安全的問題。

思前想後好像沒有什麼好的方法解決這個問題了,哎,沒辦法。

只好使出絕招了==》Callback,這個早先出現在asp.net的ajax方法。但是又不確定,能不能修改Session值。

try了一下,還好。各個功能都ok了,所以這裏給大家提下。還有callback這個方法可以用於前後臺交互的。

下面是網上找到的方法。大家還有什麼方法不妨說下。

 

 

1.如何在JavaScript訪問C#函數?

2.如何在JavaScript訪問C#變量?

3.如何在C#中訪問JavaScript的已有變量?

4.如何在C#中訪問JavaScript函數?

問題1答案如下:

javaScript函數中執行C#代碼中的函數:

方法一:1、首先建立一個按鈕,在後臺將調用或處理的內容寫入button_click中;

2、在前臺寫一個js函數,內容爲document.getElementById("btn1").click();

3、在前臺或後臺調用js函數,激發click事件,等於訪問後臺c#函數;

方法二:1、函數聲明爲public

後臺代碼(把public改成protected也可以)

public string ss()

{

return("a");

}

2、在html裏用可以調用

前臺腳本

<script language=javascript>

var a = "<%=ss()%>";

alert(a);

</script>

方法三:1、

<script language="javascript">

<!--

function __doPostBack(eventTarget, eventArgument)

{

var theForm = document.Form1; //指runat=server的form

theForm.__EVENTTARGET.value = eventTarget;

theFrom.__EVENTARGUMENT.value = eventArgument;

theForm.submit();

}

-->

</script>

<input id="Button1" type="button" name="Button1" value="按鈕" οnclick="javascript:__doPostBack('Button1','')">

方法四:

<script language="javascript">

function SubmitKeyClick()

{

if (event.keyCode == 13)

{

event.cancelBubble = true;

event.returnValue = false;

document.all.FunName.value="你要調用的函數名";

document.form[0].submit();

}

}

</script>

<INPUT οnkeypress="SubmitKeyClick()" id="aaa" type="text">

<input type="hidden" name="FunName"> 〈!--用來存儲你要調用的函數 --〉

在.CS裏有:

public Page_OnLoad()

{

if (!Page.IsPost())

{

string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";

//根據傳回來的值決定調用哪個函數

switch(strFunName)

{

case "enter()":

enter() ; //調用該函數

break;

case "其他":

//調用其他函數

break;

default:

//調用默認函數

break;

}

}

}

public void enter()

{

//……比如計算某值

}

問題2.如何在JavaScript訪問C#變量?

答案如下:

方法一:1、通過頁面上隱藏域訪問

<input id="xx" type="hidden" runat="server">

方法二:1、如後臺定義了PUBLIC STRING N; 前臺js中引用該變量的格式爲''或"++"

方法三:1、或者你可以在服務器端變量賦值後在頁面註冊一段腳本

"<script language='javascript'>var temp=" + tmp + "</script>"

tmp是後臺變量,然後js中可以直接訪問temp獲得值。

問題3.如何在C#中訪問JavaScript的已有變量?

答案如下:

方法一:1、前臺使用靜態文本控件隱藏域,將js變量值寫入其中;2、後臺用request["id"]來獲取值;

方法二:可以用cookie或session

問題4.如何在C#中訪問JavaScript函數?

答案如下:

c#代碼中執行javaScript函數:

方法一:1、

Page.RegisterStartupScript("ggg"," ");

方法二:使用Literal類,然後

private void Button2_Click(object sender, System.EventArgs e)

{

string str;

str=" ";

//Literal1.Visible=true;

Literal1.Text=str;

}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章