Почему Eval не отображает ярлык и текстовое поле?

Я извлекаю некоторые html-коды из базы данных, и я хочу отображать эти значения в веб-форме.

Вы можете увидеть мой код ниже. Он не отображает метки и текстовые поля. Однако, когда я просматриваю источник страницы.aspx в браузере, я вижу полученные метки и текстовые поля с помощью Eval. Почему я не вижу ярлыки и текстовые поля на странице?

значения базы данных:

код позади:

using (BurganEntities burganEntities = new BurganEntities())
 {
 List<dynamicfield> dynamicFields=(from dynamicField in burganEntities.DynamicField select dynamicField).ToList();
 cdcatalog.DataSource = dynamicFields;
 cdcatalog.DataBind();
 }
</dynamicfield>

ASPX:

3 ответа

Ваш код просто выводит в браузер; он не разбирает его с процессором WebForms, чтобы преобразовать его в элемент .

В вашей базе данных вы, вероятно, должны хранить:

а затем используя Request.Form() для извлечения значения.


Быстрый ответ заключается в том, что asp, net controls скомпилированы на стороне сервера, но вы используете их в качестве текста на последней странице рендеринга html - поэтому вы пропустили эту компиляцию, а страница asp.net ничего об этом не знала.

Решение состоит в том, чтобы избегать элементов управления asp.net и использовать регулярные элементы управления html. Вы по-прежнему можете получить код возврата, вы можете пропустить некоторые простые в использовании функции, но вы можете сделать свою работу альтернативным способом.

Другим возможным решением является считывание базы данных и динамическое создание элементов управления. Например, вы можете добавить флаг в строку базы данных, в котором говорится: теперь создайте текстовое поле, а позади кода вы просто создадите это текстовое поле динамически.


Я не уверен, что вы начали писать свои динамические элементы управления, но, как дополнение к второму ответу, я хотел бы упомянуть больше источников о динамических элементах управления.

Хотя в ASP.NET MVC нет концепции управления в ASP.NET, вы можете перейти на страницу доступа к веб- страницам ASP.NET.

Поскольку вы хотите скомпилировать свой код на стороне сервера; при любой обратной передаче вы потеряете динамический контент. Так что прочитайте это и все сделайте.

Или, как вы упомянули, вы не получили значения текстовых полей, см. Следующий метод,

var textBox = FindControl("<id_of_textbox>") as TextBox;

if(textBox != null)
{
 var textBoxValue = ((TextBox)textBox).Text;
}

</id_of_textbox>

см. метод FindControl на этой странице

licensed under cc by-sa 3.0 with attribution.