将html布局添加到空白的aspx页面

时间:2012-08-08 16:38:15

标签: c# asp.net

想要创建没有任何asp控件的动态html布局。实际上我只想在aspx页面上留下第一行

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Kletka._Default" %>

并在codebehind上生成完整的html布局。建议如何实现这一点。

3 个答案:

答案 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表单。耶。

相关问题