में लिपटे सामग्री को कैप्चर करें मैं एक स्टार्टफॉर्म स्टाइल एचटीएमएल हेल्पर लिखने की कोशिश कर रहा हूं जो अन्य कोड को लपेटने के लिए आईडीस्पोजेबल का उपयोग करता है। मैं चाहता हूं कि हेल्पर केवल एक निश्चित स्थिति को पूरा करने के लिए लिपटे कोड को प्रस्तुत करे (उदा। उपयोगकर्ता एक निश्चित भूमिका में है)।BeginForm शैली डिस्पोजेबल एचटीएमएल हेल्पर
मैंने सोचा कि मैं बस संदर्भ को स्विच कर सकता हूं। शुरुआत विधि में लेखक और इसे वापस विधि में स्विच करें। नीचे दिया गया कोड संकलित करता है और चलता है लेकिन सभी मामलों में लिपटे सामग्री को प्रस्तुत किया जाता है। यदि मैं इसके माध्यम से कदम उठाता हूं, तो लिपटे सामग्री को नए स्ट्रिंगवाइटर पर नहीं लिखा जाता है और इसलिए मेरे नियंत्रण में नहीं होता है।
public static IDisposable BeginSecure(this HtmlHelper html, ...)
{
return new SecureSection(html.ViewContext, ...);
}
private class SecureSection : IDisposable
{
private readonly ViewContext _context;
private readonly TextWriter _writer;
public SecureSection(ViewContext context, ...)
{
_context = context;
_writer = context.Writer;
context.Writer = new StringWriter();
}
public void Dispose()
{
if (condition here)
{
_writer.Write(_context.Writer);
}
_context.Writer = _writer;
}
}
क्या मैं HTML मददगार के साथ संभव करने की कोशिश कर रहा हूं?
मुझे पता है कि रेज़र में घोषणात्मक एचटीएमएल हेल्पर्स शायद काम करेंगे, लेकिन यदि संभव हो तो मानक एचटीएमएल सहायक दृष्टिकोण पसंद करेंगे, एमवीसी 3 में रेज़र हेल्पर्स की एपकोड सीमा को देखते हुए।
आप टिप्पणी से बाहर कर देना चाहिए "allowcontent" कोड, बस वहाँ कुछ भी नहीं है। अन्यथा मुझे नेस्टेड सामग्री मिलती है। साथ ही, बैक-अप केवल तभी जरूरी है जब अनुमत 'झूठा ' – Alex
धन्यवाद @jitbit, मैंने अपनी पोस्ट अपडेट की है। जिस तरह से एक विचारधारा: इस सुरक्षित वर्ग ने बयान में अंतर्निहित सरल अंतर्निहित मूल्य पर बहुत कम मूल्य जोड़ा है ... यदि आपको HTML में हेरफेर करने की आवश्यकता है, तो मैं केवल यह मार्ग लेता हूं, और अन्य सभी विकल्पों का प्रयास करता हूं। मैंने इस पोस्ट को बनाने के बाद से रेजर के साथ बहुत कुछ काम किया है, और रेज़र में "उपयोग" वाक्यविन्यास को वाक्यविन्यास चीनी के बजाय भाषा दुर्व्यवहार के रूप में देखता है। – Moeri