asp.net mvc - नेस्टेड टैगबिल्डर- टैगबिल्डर ट्री-
asp.net-mvc razor (2)
टैगबिल्डर एचटीएमएल तत्वों के निर्माण के लिए एक अच्छा कार्यान्वयन है। लेकिन कुछ- HTML तत्वों में एक और तत्व हो सकते हैं (मैंने बच्चों की तरह कहा)। मुझे एमवीसी कक्षाओं से कोई कक्षा नहीं मिली।
सवाल; क्या मुझे कुछ कक्षाओं (टैगबिल्डर ट्री, और टैगबिल्डररोड) को लागू करना चाहिए जो नेस्टेड टैग का समर्थन करते हैं या क्या मुझे कुछ याद आया?
आप अलग-अलग टैगबिल्डर में बाल तत्वों का निर्माण कर सकते हैं और अपने जेनरेट किए गए HTML को मूल टैगबिल्डर में डाल सकते हैं।
यहां एक उदाहरण दिया गया है: <select>
कुछ <option>
एस के साथ (उदाहरण के लिए tseness के लिए de-fatted)
TagBuilder select = new TagBuilder("select");
foreach (var language in languages) // never ye mind about languages
{
TagBuilder option = new TagBuilder("option");
option.MergeAttribute("value", language.ID.ToString());
if (language.IsCurrent)
{
option.MergeAttribute("selected", "selected");
}
option.InnerHtml = language.Description;
// And now, the money-code:
select.InnerHtml += option.ToString();
}
टैग बनाने के लिए टैगबिल्डर के साथ मेरी समस्या यह है कि यह बहुत ही रखरखाव योग्य दिखता है। दूसरी तरफ, स्ट्रिंगबिल्डर का एपेंडफॉर्मैट न केवल कोड को बनाए रखने योग्य बनाता है, बल्कि अच्छी दक्षता के साथ भी चलता है।
मैंने मैटस्ले की # 1 विधि में थोड़ा सुधार किया है। मैंने स्ट्रिंगबिल्डर की अपेंडफॉर्मेट विधि में केवल एक कॉल का उपयोग किया और प्रारूप को परिभाषित करने के लिए सी # स्ट्रिंग शाब्दिक का उपयोग किया। नतीजतन प्रारूप वांछित परिणाम की तरह दिखता है और दक्षता के साथ चलता है।
var sb = new StringBuilder();
sb.AppendFormat(
@"<div class='control-group'>
<label class='control-label' for='{0}_{1}'>{2}</label>
<div class='controls'>
<input id='{0}_{1}' name='{0}[{1}]' value='{3}' />
</div>
</div>",
propObj.ModelType,
propObj.ModelProperty,
propObj.LabelCaption,
propObj.PropertyValue);
return new HtmlString(sb.ToString());
उम्मीद है की यह मदद करेगा!