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>

मेरा मतलब है कि यह काम करता है, लेकिन मैं मदद नहीं कर सकता लेकिन यह महसूस करता हूं कि यह डिज़ाइन बेकार है।

0
Tom Gullen 7 मार्च 2011, 01:56
सीएसएस के माध्यम से यूआई को नियंत्रित करने के विरोध में किसी भी कारण से आप शैली विशेषताओं के साथ एचटीएमएल उत्पन्न कर रहे हैं (अपना खुद का ब्लॉग इंजन लिखने के अलावा - वहां बहुत सारे हैं)?
 – 
Ta01
7 मार्च 2011, 01:58
@ केडी 7, केवल इसलिए कि केवल शैली की विशेषता की आवश्यकता है फ्लोट: बाएं या फ्लोट: दाएं जो एकमात्र अपवाद है जिसे मैं डिजाइन कर रहा हूं।
 – 
Tom Gullen
7 मार्च 2011, 01:59
@ एंडी, मुझे नहीं पता, मैं बस सोच रहा था कि ऐसा करने का एक आसान और अधिक दृश्य तरीका होगा? अगर मैं उस ब्लॉग कमेंट बॉक्स के एचटीएमएल को बदलना चाहता हूं तो यह एक बुरा सपना होगा।
 – 
Tom Gullen
7 मार्च 2011, 02:05
1
- क्योंकि यह मॉडल वर्ग में डिस्प्ले कोड डालने से चिंताओं को अलग करने का उल्लंघन करता है। ऐसा करने का एक बेहतर तरीका एक टिप्पणी उपयोगकर्ता नियंत्रण होगा जो BlogComment वर्ग को डेटा के रूप में उपयोग करता है। बेहतर अभी तक, एमवीसी पर स्विच करें और एचटीएमएल को एक दृश्य में उत्पन्न करें।
 – 
tvanfosson
7 मार्च 2011, 02:07
@tvan, क्या मैं एक कस्टम नियंत्रण बना सकता हूं, और फिर पीछे के कोड से नियंत्रण उत्पन्न कर सकता हूं? क्या यह काम करेगा?
 – 
Tom Gullen
7 मार्च 2011, 02:10

1 उत्तर

सबसे बढ़िया उत्तर

बस अपने एएसपीएक्स पेज में सादा पुराना अच्छा एचटीएमएल लिखें।

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

कृपया अतिरिक्त कक्षाएं लागू न करें। फिर आप सीएसएस जोड़ सकते हैं:

.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 रेंडर करने के लिए उन बिल्कुल अपठनीय सर्वर-साइड नियंत्रणों को मैन्युअल रूप से बनाने का कोई कारण नहीं दिख रहा है।

5
Dmytrii Nagirniak 7 मार्च 2011, 06:26
धन्यवाद, क्या यह पुनरावर्तक में जा सकता है? मैंने पहले कभी पुनरावर्तक का उपयोग नहीं किया है
 – 
Tom Gullen
7 मार्च 2011, 03:59
हाँ यह कर सकते हैं। आपको केवल HTML में सामग्री डालने के तरीके को बदलने की आवश्यकता होगी। लेकिन फिर, मुझे पुनरावर्तक का उपयोग करने का कोई कारण नहीं दिख रहा है :)
 – 
Dmytrii Nagirniak
7 मार्च 2011, 06:24