如何从.cs文件调用JavaScript / jQuery函数C#

时间:2011-07-20 13:06:44

标签: c# javascript jquery asp.net

我正在开发asp.net(C#)项目,其中包括一些页面文件(aspx,aspx.cs)和一些仅(.cs)文件。我可以使用scriptregister从页面文件(aspx,aspx.cs)访问JavaScript / jQuery函数。但我的问题是如何从(.cs)文件访问JavaScript / jQuery函数。我在(.cs)文件中生成了一些html标签,因此需要从(.cs)类调用JavaScript / jQuery函数。

我拥有的文件(例如):

  • Default.aspx的
  • Default.aspx.cs
  • 和Web.cs(我关心的是从web.cs调用JavaScript / jQuery函数)

实际上,我要做的是在Web.cs(业务对象)中生成一些HTML代码,并在web.cs中生成HTML代码时,我需要一些由jQuery函数生成的其他动态HTML代码,输出是我的关注:var output ="My HTML Code Generated by jQuery function"

现在我需要将上面的jQuery输出与Web.cs HTML代码生成合并。

请告诉我如何才能从web.cs调用jQuery函数并将结果从jQuery返回到web.cs才能合并?

由于

8 个答案:

答案 0 :(得分:2)

这个问题并没有说得太老实。你可能对这一切如何协同工作存在误解。

c#代码在Web服务器上运行,输出是呈现给浏览器的Html代码,包括javascript。

Javascript被加载到浏览器中并在客户端的计算机上本地执行。

如果您试图操纵或控制客户端页面的某些方面加载javascript或其他任何一个将脚本添加到页面本身( .aspx文件)注册并使用Client.Register api流式传输它打电话,或添加<脚本....>标记以将其导入文件。

我不知道Web.cs类在做什么,我会假设它是某种逻辑或业务对象。您需要将客户端脚本的需求从它传送回表示层,以使其在客户端运行。

如果你的印象是你可以从服务器端运行javascript,那你就错了。

答案 1 :(得分:1)

ASP代码是服务器端 javascript在客户端。

你无法真正调用javascript 您可以通过ASP代码创建一个html文件,该代码将生成一个onload javascript方法 然后当加载html时,javascript将运行。

答案 2 :(得分: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>

答案 3 :(得分:0)

JavaScript是客户端,c#是服务器端,因此您无法从服务器端调用JavaScript,但是您可以安排在客户端呈现页面时执行JavaScript ...

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

答案 4 :(得分:0)

除非你有绝对坚如磐石的用例,否则你应该重新考虑从c#中进行JavaScript渲染。

通常情况下,将两者分开要简单得多。使用c#生成标记,并“标记”相应的元素(可能使用CSS类,因为ASP.NET具有如此糟糕的id处理)。

然后简单地使用jQuery来查找和操作那些标记的元素,但是使用外部的js脚本,而不是内联生成JavaScript本身。

答案 5 :(得分:0)

您可以将ScriptManager传递给Web.cs,然后使用您在代码隐藏中使用的相同方法,但是最好只是从Web.cs构造和返回javascript字符串,并且仍然可以调用js像你一直在做的代码隐藏。

答案 6 :(得分:0)

如果您只是想从一个独立的cs文件注册一些客户端脚本,我能看到这个工作的唯一方法是将您的函数传递给该页面的ClientScriptManager。

答案 7 :(得分:0)

脚本注册实际上发生在“页面”对象上,即Web.cs无权访问页面以注册脚本。例如,如果希望Web.cs在Default.aspx页面上注册脚本,则需要通过接口或类定义授予对Default.aspx / cs“Page”对象的Page.ClientScript.RegisterClientScriptBlock方法的访问权限。