我正在尝试使用textarea将用户输入作为单独的条目从textarea中获取。
我的文本区域:
<asp:TextBox runat="server" TextMode="MultiLine" ID="uploadFieldChoices"></asp:TextBox>
在textarea上看到textarea的价值:
代码检索的textarea值:
然后我想要以XML格式存储并使用它来生成一个下拉列表,其中包含这三个条目作为选项。
要抓住我正在尝试做的就是在换行符上拆分textarea值并将其用作我的值来存储为XmlNodes:
代码
If lstrFieldType = "Dropdown" Then
Dim lnodChoices As XmlNode = ldocFieldList.CreateElement("options")
Dim larrSplit() As String = uploadFieldChoices.Text.Split(Environment.NewLine)
For Each lstrOption As String In larrSplit
If Not lstrOption.Trim = "" Then
Dim lnodOption As XmlNode = ldocFieldList.CreateElement("option")
lnodOption.InnerText = lstrOption
lnodChoices.AppendChild(lnodOption)
End If
Next
lnodUploadField.AppendChild(lnodChoices)
End If
但到目前为止,我无法让larrSplit
实际上给我一个以上的值。奇怪的是,即使上面只给我一个XmlNode,xml文件实际上会在条目中有换行符!
我知道普通的VB文本框有一个“.lines”属性,它提供了我正在寻找的内容,但它不是Web.Textbox控件中的属性。
我也试过了:
Dim larrSplit() As String = uploadFieldChoices.Text.Split("\n\r")
Dim larrSplit() As String = uploadFieldChoices.Text.Split(vbNewLine)
Dim larrSplit() As String = uploadFieldChoices.Text.Split(vbCrLf)
但没有工作。
为什么这不起作用,是否有比上述完全不同的更好方法?
谢谢!
修改
包含textarea的代码,因为它可能是相关的。
修改2
包含文本框和值的图像。
答案 0 :(得分:1)
我使用这些控件在VS2008中制作了粗略的网页表单:
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox><br />
<asp:Button ID="Button1" runat="server" Text="Button" /><br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
并使用此代码:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim t = TextBox1.Text
Dim s As String = ""
For Each c In t
s &= Asc(c).ToString() & " "
Next
Label1.Text = s
' this part added after checking what the line separators are in a multi-line TextBox
Dim myLines = t.Split(New String() {vbCrLf}, StringSplitOptions.RemoveEmptyEntries)
Dim u As String = ""
For Each l In myLines
u &= String.Format("*{0}* ", l)
Next
Label2.Text = u
End Sub
要获得此结果:
调试器中的数据可视化器不会将换行符显示为换行符,除非您单击小放大镜图标旁边的扩展器并选择“Text Visualizer”。
相关:What character represents a new line in a text area。
所以答案是确认TextArea中的.Text具有预期的行分隔符并将其拆分,如上所示。
答案 1 :(得分:0)
"\n", "\r", "\n\r"
或它们的组合上拆分,并将结果存储在字符串数组中。
Dim larrSplit As String() = uploadFieldChoices.Text.Split(new String() {Environment.NewLine},
StringSplitOptions.None)
修改:添加了包含结果的图片。
编辑1:根据您编辑的问题,您的textarea值似乎并未真正被换行符拆分,而是空白。通过指定没有参数的String.Split来尝试更新的代码,这将按空格分割,如果您在If Not lstrOption.Trim = "" Then
循环中另外检查For Each
,您将获得三个值。
Dim larrSplit As String() = uploadFieldChoices.Text.Split()
For Each lstrOption As String In larrSplit
If Not lstrOption.Trim = "" Then
....
Response.Write(lstrOption.ToString())
End If
Next