为什么Eval不显示标签和文本框?

时间:2013-07-03 23:15:35

标签: c# asp.net eval

我从数据库中检索一些html代码,我想在webform中显示这些值。

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

数据库值:

enter image description here

代码背后的代码:

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

ASPX:

enter image description here

3 个答案:

答案 0 :(得分:3)

快速的答案是因为 asp,net控件是编译服务器端,但你在最终的渲染html页面上使用它们作为文本 - 所以你跳过这个编译,asp.net页面做了对他们一无所知。

解决方案是避免使用asp.net控件并使用常规的html控件。您仍然可以获得他们的代码返回,您可能会错过一些易于使用的功能,但您可以使用其他方式进行工作。

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

我不确定你是否已经开始编写动态控件但作为第二个回复的补充,我想提及更多关于动态控件的消息来源。

虽然there is no concept of controls in ASP.NET MVC any longer,但您可以关注ASP.NET webform data access页面。

您想在服务器端编译代码;在任何回发中,您将失去动态内容。所以read this完成了所有工作。

或者正如您所提到的,您没有获得文本框的值,请参阅以下方法,

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

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

</id_of_textbox>

请参阅FindControl method at this页面