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

У меня есть простая форма с простым вводом html, как показано ниже, с использованием веб-форм ASP.NET (не 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, но, к сожалению, в настоящее время это невозможно изменить.

Ваше здоровье Колин Джи

Этот html находится внутри элемента <form>, да?

Crescent Fresh 12.01.2009 18:58

Вы знаете, что Request.Form - это набор пар имя / значение, которые браузер отправил по запросу. только отправляет их, когда выполняется form.submit (), либо через javascript (скажем, обратная передача элемента управления asp.net), либо нажата кнопка отправки?

TStamper 12.01.2009 19:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
2
5 636
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Это решит ее, но не потому, что проблема с жизненным циклом ASP.NET. Проблема в том, что входные данные не имеют имен и поэтому никогда не отправляются клиентом вместе с формой.

tvanfosson 12.01.2009 19:23

Элементы <input /> попадут в Request.Form независимо от runat = "server". Им просто нужно дать имя (т.е. name = "..." вместо того, чтобы иметь только id = "...", как указано).

Crescent Fresh 12.01.2009 19:26
Ответ принят как подходящий

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

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

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

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

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

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

Другие вопросы по теме