2013-08-13 4 views
6

मैं एमवीसी 4 में एक एचटीएमएल हेल्पर का निर्माण कर रहा हूं और मैं जानना चाहता हूं कि HTML मददगार में टैग/एचटीएमएल कैसे व्यवस्थित करें।रेजर या टैग बिल्डर का उपयोग कर एचटीएमएल हेल्पर में एचटीएमएल का निर्माण?

public static MvcHtmlString Image(this HtmlHelper html, string imagePath, 
    string title = null, string alt = null) 
{ 
    var img = new TagBuilder("img"); 
    img.MergeAttribute("src", imagePath); 
    if (title != null) img.MergeAttribute("title", title); 
    if (alt != null) img.MergeAttribute("alt", alt); 

    return MvcHtmlString.Create(img.ToString(TagRenderMode.SelfClosing)); 
} 

एक और की ओर से मैं कुछ इस तरह कर सकते हैं::

// C#: 
public static MvcHtmlString Image(this HtmlHelper html, string imagePath, 
    string title = null, string alt = null) 
{ 
    var model = new SomeModel() { 
     Path = imagePath, 
     Title = title, 
     Alt = alt 
    }; 

    return MvcHtmlString.Create(Razor.Parse("sometemplate.cshtml", model)); 
} 

// cshtml: 
<img src="@model.Path" title="@model.Title" alt="@model.Alt" /> 

बेहतर समाधान है कौन सा

उदाहरण यहां के लिए सरल एचटीएमएल सहायक कि TagBuilder वर्ग का उपयोग कर छवि टैग बना देता है?

उत्तर

3

दोनों मान्य हैं, मुझे लगता है कि बाद वाले को बहुत धीमा होना चाहिए और मैं यह देखने की कोशिश कर रहा हूं कि आंशिक दृश्य का उपयोग करके इसका क्या लाभ होगा।

अंगूठे का मेरा नियम यह है कि HtmlHelpers का उपयोग केवल सरल मार्कअप के लिए किया जाना चाहिए; कुछ और जटिल जटिल आंशिक दृश्य और बाल क्रियाओं का उपयोग करना चाहिए।

+0

का सामना करना चाहिए, मैंने इस सवाल से पूछा क्योंकि मेरे पास एक जटिल सहायक है जो एक टेबल बनाता है। तालिका बनाने के लिए मैं बड़ी संख्या में टैग का उपयोग कर रहा हूं, इसलिए मैं जानना चाहता हूं कि यह बहुत धीमा या धीमा होगा क्योंकि यह मेरी मदद कर सकता है। –

+0

मैंने इसे प्रश्न में रखा होगा क्योंकि तालिका के लिए HTML बनाने के लिए आपके दिए गए उदाहरण से अधिक जटिल है। टेबल बनाने के लिए आपको एमवीसी कोंट्रिब के ग्रिड हेल्पर पर एक नज़र डालना चाहिए - http://mvccontrib.codeplex.com/wikipage?title=Grid या System.Web.Helpers - http://msdn.microsoft.com/en में वेबग्रिड पर -US/पत्रिका/hh288075.aspx। मैं पहिया को फिर से नहीं बदलूंगा :) –

+0

मैंने सोचा कि यह भी है लेकिन यह मेरी जरूरत नहीं है। मैं डीबी से डेटा प्रदर्शित नहीं कर रहा हूं या ऐसा कुछ ... तो क्या आप कृपया मेरे प्रश्न के सही जवाब पाने में मेरी मदद कर सकते हैं? –

0

पहली विधि स्मृति में तारों पर चलती है और प्रदर्शन कर रही है, बाद में संसाधनों के मामले में अधिक महंगा है और फ़ाइल का उपयोग करता है।

+0

मुझे अंतर पता है लेकिन मैं जानना चाहता हूं कि मुझे 'टैगबिल्डर' को किस स्थिति में पीड़ित करना चाहिए और मुझे किस स्थिति में 'रेजर। पर्स' –

संबंधित मुद्दे