InnerHtml和InnerText ASPX不起作用

时间:2017-03-09 08:09:51

标签: html asp.net

我有一个包含以下内容的aspx文件:

<form id="form1" runat="server">    
    <div>
        <table border = "2" id ="pcInfo" >
            <tr><td>bla bla</td><td><span id = "idex" runat ="server"></span>  </td></tr>..

表中的数据是使用Javascript和/或JScript引入的。 在C#代码中,当我尝试使用以下方式邮寄此数据时:

a = ".." + idex.InnerHtml.ToString() + "..";<br />
b = "-" + idex.InnerText.ToString() + "-";

a总是“......”而b总是“ - ”。分配是在按钮的单击方法中完成的,因此在表/跨区的所有元素都有一些内容之后。我怎样才能获得内容?以及放置代码的位置?

Solutin

使用Javascript生成的内容可以在显示时使用输入字段。

3 个答案:

答案 0 :(得分:0)

InnerHtml将获得标记的内部html,并且在您的问题中,您获得的是span <span id = "idex" runat ="server"></span>的InnerHtml,但标记内部没有任何内容,这就是为什么它不返回任何内容。假设我想要和表格的内部html,所以我会做点什么

<div id = "idex" runat ="server">
          <table border = "2"  >
                <tr ><td >bla bla</td><td><span>asdfasdf</span></td></tr>

             </table>
 </div>

我使用了div,因为你无法获得表格的innerhtml,所以在

背后的代码中
var html= idex.InnerHtml;

现在它将返回div中的所有内容

答案 1 :(得分:0)

根据我对问题的理解,您尝试在后面的代码中访问span标记值。你可以从&#34; InnerHtml&#34;获得span标签文本。和#34; InnerText&#34;。

以下是.aspx及其.cs文件的测试代码。

Default.aspx的:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <table border = "2" id ="pcInfo" >
            <tr><td></td><td><span id = "idex" runat ="server">my content</span></td></tr>

      </table>
        Inner Html= <asp:Label ID="lblSpanInnerHtml" runat="server"></asp:Label>
        <br />
        Inner Text= <asp:Label ID="lblSpanInnerText" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

Default.aspx.cs:

using System;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            lblSpanInnerHtml.Text = idex.InnerHtml;
            lblSpanInnerText.Text = idex.InnerText;
        }
    }
}

答案 2 :(得分:0)

您的问题源于对请求 - 响应过程的误解。只有表单元素会发回服务器。 Asp.net webforms变得有意思并在一个名为ViewState的隐藏表单字段中维护一些状态信息。

通过javascript动态添加到非表单元素的任何内容对于服务器端代码基本上是不可见的。您需要另一种方法将数据传输回服务器。最简单的方法是将该数据填充到隐藏的表单元素中并检索该值服务器端。

E.g。

<tr><td></td><td>
    <span id = "idex" runat ="server">my content</span>
    <input type="hidden" id="hdnIdx" value="my content">
</td></tr>

然后通过修改现有的javascript来填充隐藏字段。

然后,服务器端获取值

lblSpanInnerText.Text = idex.Value;