感觉我做错了生成HTML

时间:2011-03-06 22:56:04

标签: c# asp.net html

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:

<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>

我的意思是它有效,但我不禁觉得这个设计很糟糕。

1 个答案:

答案 0 :(得分: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>

请不要申请其他课程。然后你可以添加CSS:

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

此外,您使用ASP.NET 4 <%:..%>注入内容(或者它可以是通常的<%=...%>,但请确保HTML将其转义)。

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