如何在内容更改后获取html

时间:2015-11-27 08:47:51

标签: c# dom webforms

在我的代码背后

protected void Page_Load(object sender, EventArgs e){
     myDiv.innerHtml = "<span>potato</span>"
}

我在myDiv中添加了一些html。这是html:

<div id="myDiv" runat="server"></div>
<form id="form1" method="post" runat="server">
    <button runat="server" onserverclick="Save_OnClick">Confirm changes</button>
</form>

页面完全加载后,我在div中看到<span>potato</span>

但是,如果我有将myDiv内容更改为<span>fish</span>内容的javascript事件,并且我想在我收到的c#myDiv事件中检索save_onclick的html内容<span>potato</span> 当我期待 <span>fish</span>

protected void Save_OnClick(object sender, EventArgs e)
    {
        string myDivHtml = myDiv.InnerHtml;
    }

就像DOM没有为服务器端刷新一样。

我该如何解决这个问题?我的意思是在javascript交互之后获得HTML,或者是否有其他方式可以做到这一点?

1 个答案:

答案 0 :(得分:0)

  1. 添加一个计时器,用于检查html文件的最后写入时间与静态DateTime对象的对比。
  2. 当html文件的最后写入时间的最后写入时间不等于静态DateTime时,请使用StreamReader调用方法。
  3. 示例代码

    class MyClass
    {
        static string divContent;
        static DateTime compareTime;
    
        private void timerGrip_Tick(object sender, EventArgs e)
        {
            if (File.Exists("yourFile.htm"))
            {
                DateTime tempDateTime = File.GetLastWriteTime("yourFile.htm");
    
                if (tempDateTime != compareTime)
                {
                    compareTime = tempDateTime;
                    GetDivContent();
                }
            }
        }
    
        private void GetDivContent()
        {
            string tempString = string.Empty;
            StreamReader reader = new StreamReader("yourFile.htm");
    
            while (!reader.EndOfStream)
            {
                tempString = reader.ReadLine();
                if (tempString.Contains("<div id=\"myDiv\""))
                    break;
            }
    
            if (!string.IsNullOrEmpty(tempString))
                divContent = tempString.Substring(31, tempString.Length - 37);
    
            reader.Close();
        }
    }