0

我有一个javascript代码,其中我使用innerHTML属性访问aspx页面中的div,并希望执行以下操作:1)获取该div标签的全部内容。
2) 将该 div 标签的全部内容绑定到一个变量 res 。
3) 将 res 中的值赋予 aspx 页面中的隐藏控件,最后
4) 从隐藏字段中呈现该值并在后面的 aspx.cs 代码中使用它。

我的aspx页面如下

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
 <script type ="text/javascript" language = "javascript">
    function inject() 
    {
        var res = document.getElementById('<%= div.ClientID %>').innerHTML.toString();
        document.getElementById('hidden1').value = res;
    }
 </script>
</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
 <asp:Button ID="BtnAdd" runat="server" Text="Add" onclick="BtnAdd_Click" Width="67px" />
 <div id = "div" runat ="server">

 </div>

 <input type = "hidden" id = "hidden1" value = "" />

 <asp:Label ID = "lbl" Text = "Final answer goes here" runat = "server"/>

</asp:Content>

以及访问它的代码如下

public partial class _Default : System.Web.UI.Page
{
    public string str = "* is the capital of *";

    StringBuilder sb = new StringBuilder();
    public static int count = 1;
    public string res;
    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder htm = new StringBuilder();
        for (int j = 0; j < str.Length; j++)
        {
            if (str[j] == '*')
            {
                string res = "<input type = 'text' id ='" + count + "' value = ''/>";
                htm = htm.Append(res);
                count++;
            }
            else
            {
                htm = htm.Append(str[j]);
            }
        }
        div.InnerHtml = htm.ToString();
    }


    protected void BtnAdd_Click(object sender, EventArgs e)
    {
        this.Page.RegisterStartupScript("<Script>", "<Script type='text/javascript'> inject();</Script>");
        string res = Request.Form["hidden1"];
        lbl.Text = res;
    }
}

现在代码正在执行,但我没有将 innerHTML 中的全部内容放到后面代码中的 res 变量上。整个内容是指标记中的所有内容。我确定我在某个地方搞砸了,或者如果它是错误的方法,我可以建议一个更好的方法吗?

感谢您抽出宝贵时间

4

0 回答 0