0

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

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

以及在代码隐藏上生成完整的 html 布局。请建议如何实现这一点。

4

3 回答 3

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 的主要原因。

您可以做的是为特定事物(页脚、页眉、左面板等)创建用户控件,并在标记中为它们定义布局;然后在后面的代码上,您可以根据某些业务条件将它们添加到页面中的特定占位符中。

假设您有一个母版页(或页面中至少有一些内容占位符),如下所示:

<asp:ContentPlaceHolder id="footer" runat="Server" />

在你可以做的代码后面:

footer.Controls.Add(new FooterControl());

更新OP刚刚在评论中提到他不喜欢asp.net控件...

您不必使用runat="server"ASP.NET 控件,如果您需要能够在服务器端操作它们的属性,则可以使用常规 HTML 控件并设置它们的属性。例如:

<div id="mydiv" runat="server" > some content </div>

关于背后的代码:

myDiv.Attributes.Add("class","css_class");
myDiv.Attributes.Add("onclick","callJavascriptFunction();");
// and so on.

在非常特定的情况下偶尔做这种事情是可以的,但我会避免这种代码,因为它很难维护。例如,假设您需要向myDiv元素添加另一个类。现在,你必须改变你的代码,而不是仅仅改变你的标记......

于 2012-08-08T16:42:08.460 回答
0

您需要在 Page_Init 事件中动态添加控件。所以你需要一个容器来保存你的 HTML,所以你应该首先向页面添加一个面板,然后页面的控件将被添加到面板中。

Panel pnl = new Panel();
Page.Controls.Add(pnl);


TextBox txt = new TextBox();
pnl.Controls.Add(txt);

ETC....

于 2012-08-08T16:41:47.847 回答
0

所以...您想使用 ASP.NET Web 表单而不使用 GridView 等内置控件吗?

您可以编写 html 并使用受保护的属性吗?<%= SomeWhereText %?

或者在后面的代码中使用完整的 html 布局来创建一个属性

protected string MyEntirePage {get;set;}

并在后面的代码中构建字符串

MyEntirePage="<h1>Hello</h1><p>body here</p><p>the end</p>";

并通过将其写在 aspx 页面中

<%=MyEntirePage%>

回复:“我明白你的意思,但我真的不喜欢 asp.net 控件。我更喜欢使用 html 控件并使用 js 自定义它们”

安装 NancyFx 或旧的(但仍然很棒)WCF Web Api 并使用类似 KnockoutJs、jQuery 或 Backbone 的东西来执行动态内容的 ajax 调用 = 根本不需要 asp.net Web 表单。耶。

于 2012-08-08T16:47:12.260 回答