将 HTML 中的 textarea/textbox 中的文本读取到 C# 代码隐藏中。 (ASP.NET)

Read text from textarea/textbox in HTML into C# codebehind. (ASP.NET)

我正在尝试使用隐藏代码来读取 HTML 提供给我的文本。在研究了这个主题之后,我发现几乎所有这方面的实例都涉及文本框的 Web 窗体控件(asp:),但我得到的 HTML 没有,而是:

<p>
    <label>Address</label>
    <textarea class="w3-input w3-border" name="addr" cols="30" rows="4"></textarea>
</p>
<div class="w3-half w3-container">
    <p>
        <label>Phone:</label>
        <input type="text" class="w3-input"/>
</div>
<div class="w3-half w3-container">
    <label style="padding-left:10px;">Email:</label>
    <input type="text" class="w3-input"/>
</div>
</p>

我是否仍然能够从这些框中读取用户提供的文本,或者我是否需要更改 HTML?

我尝试提取所提供地址的几次失败代码隐藏尝试:

string address = ((textarea)Address.FindControl("addr")).Text;
string address = ((TextBox)Address.FindControl("addr")).Text;

更新: 使用提供的解决方案中描述的服务器控件,我收到一条错误消息,指出 "A page can have only one server-side Form tag."

这是由以下标记产生的:

<form runat="server">
        <asp:textbox id="addr" runat="server" textmode="multiline" />
        </form>

随后是:

<form runat="server">
            <asp:Button ID="Ship" runat="server" Text="Ship" OnClick="Ship_Click" style="padding: 10px; margin-bottom: 10px;" class="w3-round w3-blue" />
            <asp:Button ID="Rate" runat="server" Text="Rate" OnClick="Rate_Click" style="padding: 10px; margin-bottom: 10px;" class="w3-round w3-blue" />

            </form>

文本区域与按钮位于不同的部分,我不清楚如何在没有表单标签或不让它们共享同一个标签的情况下使两者都起作用。谢谢

如果您希望访问隐藏代码中的值,则需要使用服务器控件。使用 ASP TextBox 并将 TextMode 设置为 MultiLine:

<asp:TextBox ID="textarea1" runat="server" TextMode="MultiLine" />

然后在后面的代码中:

string addr = textarea1.Text;

更新以在同一页面上演示多个表单:

<form ID="form1" runat="server">
    <asp:Button ID="Ship" runat="server" Text="Ship" OnClick="Ship_Click" style="padding: 10px; margin-bottom: 10px;" class="w3-round w3-blue" />
    <asp:Button ID="Rate" runat="server" Text="Rate" OnClick="Rate_Click" style="padding: 10px; margin-bottom: 10px;" class="w3-round w3-blue" />
</form>

<form id="form2" action="WebForm1.aspx" method="post">
    <asp:TextBox ID="textarea1" runat="server" TextMode="MultiLine" />
</form>

从这里开始,您可以使用任一方法在代码后面检索来自 form1 或 form2 的帖子的 textarea1 值...

表格 1:

string addr = textarea1.Text;

表格 2:

string addr = Request["textarea1"].ToString();

runat="server" 添加到您的 TEXTAREA 和 INPUT 标签。然后您可以从代码隐藏访问它们。您还需要为每一个分配ID属性。

<p>
    <label>Address</label>
    <textarea class="w3-input w3-border" name="addr" id="textarea1" runat="server" cols="30" rows="4"></textarea>
</p>
<div class="w3-half w3-container">
    <p>
        <label>Phone:</label>
        <input type="text" class="w3-input" runat="server" id="input1" />
</div>
<div class="w3-half w3-container">
    <label style="padding-left:10px;">Email:</label>
    <input type="text" class="w3-input" runat="server" id="input2" />
</div>
</p>