C#控制HTML元素

时间:2012-03-02 20:17:41

标签: c# javascript jquery dom

jQuery和JavaScript可以像任何东西一样操纵DOM。但是如果C#必须向客户端发送一些东西,那么据我所知,我们只能在用户的Response对象中写一些东西。现在,这将在浏览器中写入文本,但我们无法控制它写入的位置。无论如何我们可以从C#控制,有点像:

“这是文本,我希望它是某些特定DIV的innerHTML”?

6 个答案:

答案 0 :(得分:3)

你有两种方法可以做这样的事情。

  1. 制作你的div runat="server",然后可以从后端访问它来操作
  2. 使用ClientScriptManager.RegisterClientScriptBlock注册JavaScript调用并以此方式操作div。
  3. 但正如Chuck在他的评论中提到的那样 - 在ASP.NET中这是一件相当奇怪的事情。在大多数情况下,您使用Label,Literal等服务器控件来添加和操作页面上的文本,而不是直接修改本机DOM元素。

答案 1 :(得分:1)

这不是互联网如何运作的。当您的浏览器导航到网页时,它会向服务器发送请求。服务器响应一些东西。如果它试图显示整个网页,则需要返回整个页面的HTML。 C#正在为网络服务器提供动力。

当您浏览到另一个页面时,您不会修改现有页面;你得到了一个全新的页面。我们使用JavaScript来解决这个问题,让它向Web服务器发出调用并使用它返回的信息来修改页面上的HTML,因为它在客户端运行。

所以:不。

答案 2 :(得分:1)

您可以从后面的代码中设置div的内部html。只需将一个runat =“server”属性添加到div

即可
<div id="divUserInfo" runat="server"></div>

并在您的代码中

string strHtml="<h3> User Name </h3><p>User description</p>";
divUserInfo.innerHtml=strHtml;

答案 3 :(得分:1)

这是在VB.NET中,但我确信C#有一个等价物。只需注入一些javascript来做你想做的事。

ClientScript.RegisterStartupScript(Me.GetType, "myScript", 
    String.Format("<script>document.getElementById('{0}').innerHTML = '{1}';</script>", elementID, html))

答案 4 :(得分:0)

.NET提供了执行此操作的框架 - 请查看WebFormsMVC

答案 5 :(得分:0)

From this article on MSDN

<%@ 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">

  protected void Page_Load(object sender, EventArgs e)
  {
    Message.InnerHtml = Server.HtmlEncode("Welcome! You accessed this page at: " + DateTime.Now);
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HtmlContainerControl Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <span id="Message" runat="server"></span>    
    </div>
    </form>
</body>
</html>