Kaan Öztürk Ответов: 2

Как я правильно получаю значения из текстовых полей ASP.NET


У меня есть цикл for и панель на Aspx;

<asp:Panel ID="Panel1" runat="server">

         <%for (int i = 0; i <= 6; i++)
          {%>
<asp:TextBox ID="tb" class="form-control"  runat="server"></asp:TextBox>

         <%} %>
   </asp:Panel>


Он возвращает 7 текстовых полей, и я могу получить значения из текстовых полей со следующим кодом;

 int j = 0;
        foreach (TextBox tbValue in Panel1.Controls.OfType<TextBox>())
        {
            xArray[j] = tbValue.Text;
j++;
        }


например, я заполняю текстовые поля на html

ТВ1.текст: пример sample 1
tb2. text: Sample2
tb3. text: Sample3
tb4.текст: нуль
tb5.текст: нуль
ТВ6.текст: нуль

Когда я публикую его, tb. text возвращает одно значение как " Sample1, Sample2, Sample3,,,,"
Так,
xArray[0]= " Sample1, Sample2, Sample3,,,,"
xArray[1]=null
xarray[2]=null
.
.
.
Так и должно быть;
xArray[0]=Sample1
xArray[1]=Sample2
...
Как я могу правильно заполнить?

Что я уже пробовал:

ничего.......................

2 Ответов

Рейтинг:
12

Karthik_Mahalingam

Он не будет работать с текстовым полем Asp, попробуйте использовать элемент ввода HTML

Aspx-файл

    <%for (int i = 0; i <= 6; i++)
             {%>
           <input type="text" name="txt_<%= i %>"  />

<%} %>

с фоновым кодом
protected void Button1_Click(object sender, EventArgs e)
     {
         string[]xArray =new string[7];

         for (int i = 0; i <= 6; i++)
         {
             string value = Request.Form.Get("txt_" + i);
             xArray[i] = value;
         }


     }


Рейтинг:
1

Mahesh Pratap Singh

Привет Дружище,
Вы заметили, что все ваши динамически создаваемые текстовые поля имеют один и тот же идентификатор ? В идеале все элементы управления в веб-форме должны иметь уникальный идентификатор. Если вы попытаетесь назначить уникальный идентификатор динамически со страницы aspx, то этого не произойдет.
Мое предложение:
1.) Удалите этот код со страницы aspx:

 <%for (int i = 0; i <= 6; i++)
          {%>
<asp:TextBox ID="tb" class="form-control"  runat="server"></asp:TextBox>
 
         <%} %>


2.) Добавьте ниже код в свой код позади:
for (int i = 0; i <= 6; i++)
           {
               TextBox tb = new TextBox();
               tb.ID = "tb" + i.ToString();
               tb.Attributes.Add("class", "form-control");
               Panel1.Controls.Add(tb);
           }


Вуаля, теперь это работает.