2011-07-20 87 views
-1

我正在研究包含一些頁面文件(aspx,aspx.cs)和一些(.cs)文件的asp.net(C#)項目。我可以使用scriptregister從頁面文件(aspx,aspx.cs)訪問JavaScript/jQuery函數。但我的問題是如何從(.cs)文件訪問JavaScript/jQuery函數。我在(.cs)文件中生成一些html標記,因此需要從(.cs)類調用JavaScript/jQuery函數。如何從.cs文件調用JavaScript/jQuery函數C#

我有這些文件(例如):

  • Default.aspx的
  • Default.aspx.cs
  • 而Web.cs(我關心的是調用從網頁的JavaScript/jQuery函數的.cs)

其實,我試圖做的是產生web.cs(業務對象)一些HTML代碼,而在web.cs生成HTML代碼,我需要通過生成其他一些動態的HTML代碼jQuery函數的輸出是我的擔心:var output ="My HTML Code Generated by jQuery function"

現在我需要上面的jQuery輸出與Web.cs HTML代碼合併生成。

請讓我知道怎麼能從web.cs中調用jQuery函數並從jQuery中獲取結果到web.cs中以合併?

感謝

回答

0

腳本註冊實際發生在「Page」對象上,即Web.cs無權訪問頁面來註冊腳本。例如,如果您希望Web.cs在Default.aspx頁面上註冊腳本,則需要通過接口或類定義訪問Default.aspx/cs「Page」對象的Page.ClientScript.RegisterClientScriptBlock方法。

+0

我修改了我的問題,請看看它。 – irfan

1

ASP代碼是服務器端。
JavaScript是在客戶端。

你不能真正調用JavaScript。
您可以通過ASP代碼創建一個html文件,該代碼將生成一個onload javascript方法。
然後,當加載html時,JavaScript將運行。

0

除非你有一個絕對堅如磐石的用例,否則你應該重新考慮從C#中進行JavaScript渲染。

通常情況下,將兩者分開要簡單得多。使用c#生成你的標記,並「標記」適當的元素(可能使用CSS類,因爲ASP.NET對id有如此糟糕的處理)。

然後,只需使用jQuery來查找和操作那些標記的元素,但是使用外部js腳本而不是內聯生成JavaScript本身。

0

您可以將ScriptManager傳遞給Web.cs,然後使用您在代碼隱藏中使用的相同方法,但是最好從Web.cs構造並返回JavaScript字符串,並且仍然調用js從你的代碼隱藏,就像你一直在做的一樣。

+0

我修改了我的問題,請看看它。 – irfan

0

如果你只是想從一個獨立的cs文件註冊一些客戶端腳本,我可以看到這個工作的唯一方法是將你的函數引用到頁面的ClientScriptManager。

+0

我修改了我的問題,請看看它。 – irfan

1

這是使用Page.RegisterStartupScript方法

<%@ Page Language="C#"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<script runat="server"> 
    public void Page_Load(Object sender, EventArgs e) 
    { 
    String csname1 = "PopupScript"; 
    String csname2 = "ButtonClickScript"; 

    if (!IsClientScriptBlockRegistered(csname1)) 
    { 
     String cstext1 = "<script type=\"text/javascript\">" + 
      "alert('Hello World');</" + "script>"; 
     RegisterStartupScript(csname1, cstext1); 
    } 

    if (!IsClientScriptBlockRegistered(csname2)) 
    { 
     StringBuilder cstext2 = new StringBuilder(); 
     cstext2.Append("<script type=\"text/javascript\"> function DoClick() {"); 
     cstext2.Append("Form1.Message.value='Text from client script.'} </"); 
     cstext2.Append("script>"); 
     RegisterClientScriptBlock(csname2, cstext2.ToString()); 
    } 
    } 
</script> 
<html > 
    <head> 
    <title>RegisterClientScriptBlock Example</title> 
    </head> 
    <body> 
    <form id="Form1" 
     runat="server"> 
     <input type="text" id="Message" /> <input type="button" value="ClickMe" onclick="DoClick()" /> 
    </form> 
    </body> 
</html> 
+0

我修改了我的問題,請看看它。 – irfan

2

這個問題沒有任何意義了很多老老實實做。您可能會對這一切如何協同工作產生誤解。

c#代碼在Web服務器上運行,並且輸出是向瀏覽器呈現的Html代碼,包括javascript。

Javascript被加載到瀏覽器並在客戶端的計算機上本地執行。

如果你試圖操縱或控制客戶端頁面加載的某些方面與JavaScript或東西或者腳本添加到頁面本身(.aspx文件)註冊並Client.Register API調用流,或添加一個<腳本....>標記將其導入到文件中。

我不知道什麼Web.cs類正在做什麼,我會假設它的某種邏輯或業務對象。您需要將客戶端腳本的需求從它傳回到表示層以使其運行在客戶端。

如果你在某種程度上的印象是你可以從服務器端運行javascript,那麼你錯了。