开发者

Feel I'm doing something wrong generating 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;
    }

Trying to generate the following 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 in开发者_如何学Gostantiated 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>

I mean it works, but I can't help but feel this design sucks.


Just write the plain old-good HTML in your ASPX page.

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

Please not the additional classes applied. Then you can add CSS:

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

Also you are injecting content using ASP.NET 4 <%:..%> (or it can be a usual <%=...%>, but make sure you HTML escape it).

I don't see any reason to manually create those absolutely unreadable server-side controls in order to render HTML.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜