我有一个更新的 div,但我的代码隐藏行为从未改变

I have an updated div, but my code-behind behave as it has never changed

我有一个 div 对象 (riddleIdHere),js 代码在 运行 期间将一个数字插入到此 div。我希望我的 C# 代码隐藏使用这个数字,但代码隐藏给了我一个空字符串,就像我从未在这个 div 中插入数字一样。 谁能帮帮我吗?

这是我的 div:

<div id='riddleIdHere' runat='server' style='display:none'></div>

Js:

document.getElementById("riddleIdHere").innerText = riddleid;

*riddleid 为数值型变量
我的代码隐藏应该使用我的 InnerText:

更新数据 table
sql = "UPDATE YHRiddles " +
    "SET rateSum +='"+ b + "' " +
    "WHERE id = '" + riddleIdHere.InnerText + "';";
Debug.WriteLine(riddleIdHere.InnerText);

Debug.WriteLine这里是为了看看为什么不行,打印的是空字符串

您使用 javascript 在页面上所做的更改不会自动发送到隐藏代码中。

要做到这一点,您必须创建另一个隐藏的输入控件(实际上是可以发送 post 后台代码信息的控件)并在其中写下您需要发送的信息 value 没有其他地方。该值是您可以发送的唯一值。

隐藏代码中的 InnerText 是提供一些有关如何呈现控件的信息 - 与最终页面没有交互性。

示例:Page.aspx

<head runat="server">
    <title></title>

        <script>
        function OpenIt()
        {
            document.getElementById("<%=riddleIdHere.ClientID%>").innerText = "some text";
            document.getElementById("<%=hfRiddleStatus.ClientID%>").value = "some text";
            form.s
        }
        </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <div id="riddleIdHere" runat="server" >Some Content</div>
            

            <asp:HiddenField runat="server" id="hfRiddleStatus" Value="0" />

            
            <asp:Button runat="server" Id="btnRunMe" OnClick="btnRunMe_Click" OnClientClick="OpenIt();" Text="RunMe" />

            <asp:Literal runat="server" ID="txtDebugInfos" EnableViewState="false"></asp:Literal>
        </div>
    </form>
</body>
</html>

后面的代码:

protected void btnRunMe_Click(object sender, EventArgs e)
{
    txtDebugInfos.Text = hfRiddleStatus.Value;
}

预期结果 - 单击后 hfRiddleStatus.Value 必须包含我们使用 javascript 放置的“一些文本”。

您可以创建文字:

<asp:Literal runat="server" ID="riddleIdHere" Text="" Visible="false"></asp:Literal>

然后是set asp literal text with js.