0

我从数据库中检索了一些 html 代码,我想在网络表单中显示这些值。

你可以在下面看到我的代码。它不显示标签和文本框。但是,当我在浏览器中查看 .aspx 页面源时,我可以看到使用 Eval 检索到的标签和文本框。为什么我在页面中看不到标签和文本框?

数据库值:

在此处输入图像描述

后面的代码:

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

aspx:

在此处输入图像描述

4

3 回答 3

3

快速的答案是因为asp,net 控件是在服务器端编译的,但是您将它们用作最终呈现 html 页面上的文本 - 所以您跳过了此编译,而 asp.net 页面对它们一无所知。

解决方案是避免使用 asp.net 控件并使用常规 html 控件。你仍然可以得到他们的回报,你可能会错过一些易于使用的功能,但你可以用其他方式来完成你的工作。

其他可能的解决方案是读取数据库并动态创建控件。例如,您可以在数据库行上添加一个标志,表示现在创建一个文本框,然后在您后面的代码上动态创建该文本框。

于 2013-07-03T23:20:51.907 回答
1

我不确定您是否已经开始编写动态控件,但作为第二个答复的补充,我想提一下有关动态控件的更多资源。

虽然ASP.NET MVC 中已经没有控件的概念了,但是你可以按照ASP.NET webform 数据访问页面。

因为你想在服务器端编译你的代码;在任何回发中,您都会丢失动态内容。所以阅读这篇文章就完成了。

或者你提到你没有得到文本框的值,请看下面的方法,

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

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

</id_of_textbox>

请参阅此页面上的 FindControl 方法

于 2013-07-05T12:49:43.810 回答
1

您的代码只是将 输出<asp:TextBox />到浏览器;它没有使用 WebForms 处理器对其进行解析以将其转换为<input />元素。

在您的数据库中,您可能应该存储:

<input id="txtsdsd" name="txtsdsd" class="textbox" onkeypress="return NumberOnly()" />

然后Request.Form()用于检索值。

于 2013-07-03T23:20:39.943 回答