想要创建没有任何asp控件的动态html布局。实际上我只想在aspx页面上留下第一行
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Kletka._Default" %>
并在codebehind上生成完整的html布局。建议如何实现这一点。
答案 0 :(得分:1)
一种方法是:
protected void Page_Load(object sender, EventArgs e)
{
string coolHTML = @"<div class=""someclass"">... and other cool content</div>";
Response.Write(coolHTML);
}
随着说。这是一个糟糕的主意。在代码背后动态构建HTML是一个需要维护的噩梦,它没有尽可能好地执行,并且您丢失了asp.net提供的许多其他功能,这是首先使用ASP.NET的主要原因。 / p>
您可以做的是为特定事物(页脚,标题,左侧面板等)创建用户控件,并在标记中为它们定义布局;然后在Code背后,你可以根据一些商业条件将它们添加到页面中的特定占位符。
假设您有一个母版页(或页面中至少有一些内容占位符):
<asp:ContentPlaceHolder id="footer" runat="Server" />
在后面的代码上你可以这样做:
footer.Controls.Add(new FooterControl());
更新 OP在评论中提到他不喜欢asp.net控件......
您没有必须使用ASP.NET控件,如果您需要能够在服务器上操作其属性,则可以使用常规HTML控件并设置其runat="server"
属性 - 侧。例如:
<div id="mydiv" runat="server" > some content </div>
关于代码背后:
myDiv.Attributes.Add("class","css_class");
myDiv.Attributes.Add("onclick","callJavascriptFunction();");
// and so on.
在非常特殊的情况下偶尔做偶然这样的事情是可以的,但是我会避免使用这种代码,因为很难维护。想象一下,例如,你需要在myDiv
元素中添加另一个类。现在,您必须更改代码而不是仅更改标记...
答案 1 :(得分:0)
您需要在Page_Init事件中动态添加控件。因此,您需要一个容器来保存您的HTML,因此您应首先向该页面添加一个Panel,然后该页面的控件将被添加到Panel中。
Panel pnl = new Panel();
Page.Controls.Add(pnl);
TextBox txt = new TextBox();
pnl.Controls.Add(txt);
等...
答案 2 :(得分:0)
那么......你想使用ASP.NET网页表单而不使用像GridView这样的内置控件等等吗?
您可以编写html并使用受保护的属性吗? &lt;%= SomeWhereText%?
或者在后面的代码中使用FULL html布局作为属性
protected string MyEntirePage {get;set;}
并在
后面的代码中构建字符串MyEntirePage="<h1>Hello</h1><p>body here</p><p>the end</p>";
并通过
在aspx页面中写出来<%=MyEntirePage%>
Re:“我有你的观点,但我真的不喜欢asp.net控件。我更喜欢使用html控件并用js自定义它们”
安装NancyFx或者可能是旧的(但仍然很棒的)WCF Web Api并使用类似KnockoutJs,jQuery或Backbone的东西来执行动态内容的ajax调用=根本没有asp.net web表单。耶。