Значения формы сообщения с использованием простых элементов управления HTML в веб-формах ASP.NET - PullRequest
7 голосов
/ 12 января 2009

У меня есть простая форма с простым вводом html, как показано ниже, с использованием ASP.NET Web Forms (не MVC)

<table id="tbl_SchoolDetails">
    <tbody id="tbody_SchoolDetails">
        <tr>
            <td>
            School Name
        </td>
        <td>
            <input id="SchoolDetails_SchoolName" type="text" value="<%= ViewModel.School.Name %>" />
        </td>
    </tr>
    <tr>
        <td>
            Head Teacher
        </td>
        <td>
            <input id="SchoolDetails_HeadTeacher_Name" type="text" value="<%= ViewModel.School.HeadTeacher.Name %>" />
        </td>
    </tr>
    <tr>
        <td>
            Head Teacher Email
        </td>
        <td>
            <input id="SchoolDetails_HeadTeacher_Email" type="text" value="<%= ViewModel.School.HeadTeacher.Email %>" />
        </td>
    </tr>
    <tr>
        <td>
            Regent/Placement Contact
        </td>
        <td>
            <input id="SchoolDetails_Regent_Name" type="text" value="<%= ViewModel.School.Regent.Name %>" />
        </td>
    </tr>
</tbody>
</table>

Когда я отправляю сообщение обратно на сервер, значения текстовых полей не содержатся в элементе Request.Form. Есть ли какая-то причина, по которой я скучаю? Я неохотно использую элементы управления asp.net, так как позже страница потребует изрядного количества JavaScript для изменения пользовательского интерфейса и прочего.

Я знаю, что мог бы легко сделать это с MVC, но, к сожалению, изменить это сейчас невозможно.

Приветствие Колин Г

Ответы [ 4 ]

8 голосов
/ 12 января 2009

Дайте вводу и идентификатор, и имя, и посмотрите, не решит ли это вашу проблему.

<input id="SchoolDetails_SchoolName"
       name="SchoolDetails_SchoolName"
       type="text"
       value="<%= ViewModel.School.Name %>" />

Свойство id идентифицирует только тег в DOM. Свойство name позволяет публиковать тег обратно как часть формы. Элемент управления ASP.NET или элемент HTML с runat=server автоматически получает назначенные свойства name и id.

2 голосов
/ 12 января 2009

HTML-элементы не являются частью жизненного цикла ASP.NET. Самый простой способ начать - добавить атрибут runat = "server" к элементам INPUT.

0 голосов
/ 19 мая 2013

@ Colin Используйте атрибут ClientIDMode="Static" и имя вашего серверного элемента останется неизменным на стороне клиента, даже если у вас есть runat = "server" в элементе. Надеюсь, это поможет

0 голосов
/ 13 января 2009

@ tvanfosson Приветствия, которые работали так, как я хотел.

@ Bullins Я действительно не хотел использовать runat = "server", так как это приводит к тому, что идентификаторы элементов управления заканчиваются как ctl00_ContentPlaceHolder1_ctl00_SchoolDetails_Address_Postcode, что затрудняет достижение того, что я ищу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...