我从数据库中检索一些html代码,我想在webform中显示这些值。
您可以在下面看到我的代码。它不显示标签和文本框。但是,当我在浏览器中查看.aspx页面源时,我可以看到使用Eval检索的标签和文本框。为什么我在页面中看不到标签和文本框?
数据库值:
代码背后的代码:
using (BurganEntities burganEntities = new BurganEntities())
{
List<DynamicField> dynamicFields=(from dynamicField in burganEntities.DynamicField select dynamicField).ToList();
cdcatalog.DataSource = dynamicFields;
cdcatalog.DataBind();
}
ASPX:
答案 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>