Как я могу получить пользовательский набор флажков, возвращающих значения в обратной передаче? - PullRequest
0 голосов
/ 02 апреля 2010

У меня есть следующее на странице aspx:

<td colspan="2">
    <% DisplayParties(); %>
</td>

В коде для страницы aspx у меня есть это (например, я строю HTML для флажков):

public void DisplayParties() {
    var s = new StringBuilder();
    s.Append("<input type=\"checkbox\" id=\"attorney\" value=\"12345\"/>");
    s.Append("<input type=\"checkbox\" id=\"attorney\" value=\"67890\"/>");
    s.Append("<input type=\"checkbox\" id=\"adjuster\" value=\"125\"/>");
    Response.WriteLine(s.ToString());
}

Не мой гордый момент, но что угодно. Проблема в том, что когда эта страница отправляется обратно через какое-либо событие на странице, я никогда не получаю эти теги в коллекции Request.Form.

Это просто, как работает ASP.NET (например, только контрольный пост на стороне сервера) или я упускаю что-то простое.

Насколько я понимаю, постбэк должен возвращать все переменные формы.

Ответы [ 3 ]

1 голос
/ 02 апреля 2010

Вам нужно использовать атрибут name вместо ID (и не дублировать поверенный в качестве имени):

public void DisplayParties() {
    var s = new StringBuilder();
    s.Append("<input type=\"checkbox\" name=\"attorney\" value=\"12345\"/>");
    s.Append("<input type=\"checkbox\" name=\"other_attorney\" value=\"67890\"/>");
    s.Append("<input type=\"checkbox\" name=\"adjuster\" value=\"125\"/>");
    Response.WriteLine(s.ToString());
}

Обратите внимание, что это будет отправлять соответствующее имя / значение только тогда, когда установлен соответствующий флажок. То есть, если отмечены адвокат и регулятор , где-то в POST у вас будет: ...attorney=12345&adjuster=125...

1 голос
/ 02 апреля 2010

Это не так, как вы должны делать в ASP.NET, есть серверные элементы управления, которые призваны облегчить нашу жизнь программистам и отделить код от пользовательского интерфейса. Но, во всяком случае, чтобы заставить его работать так, как вы это сделали, Request.Form будет собирать вещи по имени. Добавьте поля имени в ваши элементы управления.

0 голосов
/ 02 апреля 2010

Я не совсем уверен, но я думаю, что вам не хватает тега формы.

<form method="post" action="PageName.aspx"> 

   //your code

</form>
...