2012-08-08 69 views
0

想要在没有任何asp控件的情况下创建动态html布局。其实我想离开aspx页面只有第一线将html布局添加到空白aspx页面

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

上和产生的代码隐藏HTML完整布局。建议请问如何实现这一点。

回答

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窗体所有。好极了。

+0

我讨厌被投票而没有被告知我出错的地方。如何在没有反馈的情况下改进我的答案... – 2012-08-08 16:57:47

0

您需要在Page_Init事件中动态添加控件。所以你需要一个容器来容纳你的HTML,所以你应该开始在页面中添加一个Panel,然后页面的控件将被添加到Panel中。

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


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

等....

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控件...

你不使用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元素添加另一个类。现在,你必须改变你的代码,而不是仅仅改变你的标记......

+0

我有你的观点,但我真的不喜欢asp.net控件。我更喜欢使用html控件并使用js自定义它们。 – Ars 2012-08-08 16:45:19

+2

那你为什么不直接在aspx页面上使用HTML控件呢? – TheGeekYouNeed 2012-08-08 16:48:39

+0

我创建的不是单页面应用程序。我想开发一个网站。并解析网址(几个获取参数)加载不同的内容。 – Ars 2012-08-08 16:52:20