InnerHtml第一次工作,但不是在PostBack之后

时间:2010-03-09 17:48:57

标签: c# html

我有一个空div的网页,id =“PreAcquisitionDiv”runat =“server”

在C#代码隐藏中,在Page_Load上,我构建了一个表并将其设置为PreAcquisitionDiv.InnerHtml

我的页面显示确定。我导致PostBack,打算更改表中的数据。在代码中,PreAcquisitionDiv.InnerHtml确实发生了变化,但我第一次放在那里的表仍然显示在页面上。

我已经看到了一些关于使用InnerHtml的警告,但我看到的替代品的例子是JavaScript。

我使用的是IE 8,但我在Chrome中观察到相同的行为。

感谢您的任何建议!

例如,此代码在首次显示页面时显示“SomeStuff”;然后在PostBack之后仍然是“SomeStuff”,即使InnerHtml被更改了。

protected void Page_Load( object sender, EventArgs e )  
{ 
    StringBuilder html = new StringBuilder( @"<TABLE BORDER='1' WIDTH='100%'>" );  
    if( !IsPostBack ) 
    { 
        html.Append(@"<TR><TD>SomeStuff</TD></TR>" );  
    } 
    else  
    {  
        html.Append( @"<TR><TD>Some New Stuff</TD></TR>" );  
    } 
    html.Append( @"</TABLE>" );
    this.PreAcquisitionDiv.InnerHtml = html.ToString( );
}

1 个答案:

答案 0 :(得分:0)

如果您要在帖子上更改HTML,您是否正在运行您的功能以便在帖子上进行设置?

更新:我复制并粘贴了您的代码,对我来说效果很好。这是我的完整代码:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;

namespace Sandbox
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            StringBuilder html = new StringBuilder(@"<TABLE BORDER='1' WIDTH='100%'>");
            if (!IsPostBack)
            {
                html.Append(@"<TR><TD>SomeStuff</TD></TR>");
            }
            else
            {
                html.Append(@"<TR><TD>Some New Stuff</TD></TR>");
            }
            html.Append(@"</TABLE>");
            this.PreAcquisitionDiv.InnerHtml = html.ToString();
        }

        protected void btnTest_OnClick(object sender, EventArgs e)
        {
        }
    }
}

这是我的整个ASPX页面

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div id="PreAcquisitionDiv" runat="server">

    </div>
    <asp:Button ID="btnTest" runat="server" OnClick="btnTest_OnClick" />
    </form>
</body>
</html>