繁体   English   中英

从C#调用JavaScript

[英]calling javascript from c#

我需要使用javascript函数来显示和隐藏页面上的元素,但是需要从C#方法中调用它。 这可能吗?

编辑:我尝试了RegisterStartupScript(见下文),但这并没有隐藏我所希望的元素:

HidePopup("CompanyHQSetup", "$('#<%=DivDataProvider.ClientID %>').hide();$('#<%=modalOverlay.ClientID %>').hide();");

private void HidePopup(string Key, string jscript)
    {
        string str = "";
        str += "<script language='javascript'>";
        str += jscript;
        str += "</script>";
        RegisterStartupScript(Key, jscript);
    }

编辑:通过使用隐藏字段布尔值来解决此问题,以确定是否隐藏或显示元素

是的,签出RegisterClientScriptBlock

这是该链接的摘录:

  public void Page_Load(Object sender, EventArgs e)
  {
    // Define the name and type of the client script on the page.
    String csName = "ButtonClickScript";
    Type csType = this.GetType();

    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the client script is already registered.
    if (!cs.IsClientScriptBlockRegistered(csType, csName))
    {
      StringBuilder csText = new StringBuilder();
      csText.Append("<script type=\"text/javascript\"> function DoClick() {");
      csText.Append("Form1.Message.value='Text from client script.'} </");
      csText.Append("script>");
      cs.RegisterClientScriptBlock(csType, csName, csText.ToString());
    }
  }

一个是服务器端,另一个是客户端。 它们可以相互传递变量(通过表单/查询字符串/ cookie可以将JavaScript传递给ASP,而通过response.writing变量可以将ASP传递给JS),但是它们不能直接交互。

您可以使用page.RegisterClientScript方法来执行以下操作: http://msdn.microsoft.com/zh-cn/library/system.web.ui.page.registerclientscriptblock.aspx

试一试

Javascript是客户端,c#是服务器端。 您不能直接从C#调用javascript。 不过,请看一下Comet ,它将向您展示如何将数据从HTTP服务器推送到网页。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM