2011-03-06 39 views
0
public class BlogComment 
{ 
    public int ID; 
    public int UserID; 
    public string Username; 
    public string Comment; 
    public DateTime Date; 
    public int VotesUp; 
    public int VotesDown; 

    public Panel GetCommentPanel() 
    { 
     Panel WrapPanel = new Panel(); 
     WrapPanel.CssClass = "user-comment-wrapper"; 

     Panel VotePanel = new Panel(); 
     VotePanel.CssClass = "rfloat"; 
     HyperLink UpVote = new HyperLink(); 
     HyperLink DownVote = new HyperLink(); 
     UpVote.CssClass = "s vote-box vote-up"; 
     DownVote.CssClass = "s vote-box vote-down"; 
     UpVote.NavigateUrl="#"; 
     DownVote.NavigateUrl = "#"; 
     VotePanel.Controls.Add(UpVote); 
     VotePanel.Controls.Add(DownVote); 
     WrapPanel.Controls.Add(VotePanel); 

     Panel UserTextPanel = new Panel(); 
     UserTextPanel.CssClass = "user-comment-txt"; 
     Literal UserText = new Literal(); 
     UserText.Text = this.Comment; 
     UserTextPanel.Controls.Add(UserText); 

     return WrapPanel; 
    } 

试图生成以下HTML:觉得我做错了生成HTML

<div class="user-comment-wrapper"> 
    <div style="float:right"> 
     <a class="s vote-box vote-up" href="#"></a> 
     <a class="s vote-box vote-down" href="#"></a> 
    </div> 
    <div class="user-comment-txt"> 
     Object comes with instantiated Department with empty atributes Object comes with instantiated Department with empty atributes Object comes with instantiated Department with empty atributes.Department with empty atributes Object comes with instantiated Department with empty atributes Object comes with instantiated Department with empty atributes.  
    </div> 
    <div class="comment-info-wrapper"> 
     <div style="float:left"> 
      <strong>Posted by <a href="#">Tom</a></strong> 
     </div> 
     <div style="float:right"> 
      <strong><abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr></strong> 
     </div> 
     <div class="clear"></div> 
    </div>    
</div> 

我的意思是它的工作原理,但我不禁觉得这个设计很烂。

+0

除了编写自己的博客引擎外,还有其他的风格属性(比如编写自己的博客引擎 - 那么多),而不是通过CSS控制UI? – kd7 2011-03-06 22:58:47

+0

@ kd7,只是因为它需要的唯一样式属性是float:left或float:right这是我设计的唯一异常。 – 2011-03-06 22:59:41

+0

你为什么觉得这很糟糕? – 2011-03-06 23:04:58

回答

5

只需在ASPX页面中编写普通的老式HTML。

<div class="user-comment-wrapper"> 
    <div class="voting"> 
     <a class="s vote-box vote-up" href="#"></a> 
     <a class="s vote-box vote-down" href="#"></a> 
    </div> 
    <div class="user-comment-txt"> 
     <%: GetCommentContent() %> 
    </div> 
    <div class="comment-info-wrapper"> 
     <div class="author-info"> 
      <strong>Posted by 
       <a href="#"> <%: GetCommentAuthor() %></a> 
      </strong> 
     </div> 
     <div class="comment-info"> 
      <strong> 
       <abbr class="timeago" title="<%: GetShortCommentTime() %>"> 
       <%: GetFriendlyCommentTime() %> 
       </abbr> 
      </strong> 
     </div> 
     <div class="clear"></div> 
    </div>    
</div> 

请不要添加额外的类。使用ASP.NET 4 <%:..%>

.user-comment-wrapper .voting { float: right; } 
.comment-info-wrapper .author-info { float: left; } 
.comment-info-wrapper .comment-info { float: right; } 

你也是注入的内容(或它可以是一个通常的<%=...%>,但要确保你的HTML转义):然后你就可以添加CSS。

我没有看到任何理由手动创建那些绝对不可读的服务器端控件来呈现HTML。

+0

谢谢,这可以在中继器吗?我以前从未使用过中继器 – 2011-03-07 00:59:22

+0

是的,它可以。您只需要改变将内容注入HTML的方式。但是,再次,我没有看到使用Repeater的理由:) – 2011-03-07 03:24:01