簡體   English   中英

如何從.cs文件C#調用JavaScript/jQuery function

[英]How to call JavaScript/jQuery function from .cs file C#

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

我擁有的文件是(例如):

  • 默認.aspx
  • 默認.aspx.cs
  • 和 Web.cs (我關心的是從 web.cs 調用 JavaScript/jQuery function)

Actually, What I'm trying to do is to generate some HTML code in Web.cs (Business Object) and while generating HTML code in web.cs i need some other dynamic HTML code generated by jQuery function which output is my concern: var output ="My HTML Code Generated by jQuery function"

現在我需要上面的 jQuery output 與 Web.cs Z4C4AD5FCA2E7A3F74DBB1CED003 代碼合並

Kindly let me know how can it be possible to call jQuery function from web.cs and get back the result from jQuery to web.cs in order to merger?

謝謝

老實說,這個問題沒有多大意義。 您可能對這一切如何協同工作存在誤解。

The c# code is running on the web server, and the output is Html code that is rendered down to the browser, including javascript.

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

如果您嘗試使用 javascript 或其他方式操作或控制客戶端頁面加載的某些方面,或者將腳本添加到頁面本身( .aspx 文件)寄存器並使用 Client.Register Z8A5DA52ED126447D359E70C05721 將其添加到 stream 中,或者添加一個 <AAZ8 調用... .> 標簽將其導入文件。

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

如果您以某種方式認為可以從服務器端運行 javascript,那您就錯了。

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

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

這是使用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>

JavaScript is client side and c# is server side so you can't call JavaScript from server side, but you can schedule a JavaScript to be executed when the page is rendered on the client side...

http://msdn.microsoft.com/en-us/library/aa478975.aspx

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

通常,將兩者分開要簡單得多。 使用 c# 生成標記,並“標記”適當的元素(可能使用 CSS 類,因為 ASP.NET 對 id 的處理非常糟糕)。

然后簡單地使用 jQuery 來查找和操作這些標記的元素,但是使用外部 js 腳本執行此操作,而不是生成 JavaScript 本身內聯。

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

如果您只是想從獨立的 cs 文件中注冊一些客戶端腳本,我可以看到此工作的唯一方法是向您的 function 傳遞對頁面的 ClientScriptManager 的引用。

腳本注冊實際上發生在“頁面”object 上,即Web.cs 無權訪問該頁面來注冊腳本。 例如,如果您希望 Web.cs 在 Default.aspx 頁面上注冊腳本,則需要通過接口或 class 定義授予對 Default.aspx/cs“Page”對象的 Page.ClientScript.RegisterClientScriptBlock 方法的訪問權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM