繁体   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