तरीका है कि इस BeginForm साथ किया जाता है क्या करना होगा है कि वापसी प्रकार MvcForm
impliments IDisposable
इतनी है कि जब एक using
बयान के भीतर इस्तेमाल, की Dispose
विधि MvcForm
बंद </form>
टैग लिखता है।
आप एक विस्तार विधि लिख सकते हैं जो वास्तव में वही काम करता है।
यहां एक है जिसे मैंने अभी प्रदर्शित करने के लिए लिखा है।
पहले, विस्तार विधि:
public static class ExtensionTest
{
public static MvcAnchor BeginLink(this HtmlHelper htmlHelper)
{
var tagBuilder = new TagBuilder("a");
htmlHelper.ViewContext.Writer
.Write(tagBuilder.ToString(
TagRenderMode.StartTag));
return new MvcAnchor(htmlHelper.ViewContext);
}
}
और यहाँ हमारे नए प्रकार है, MvcAnchor:
public class MvcAnchor : IDisposable
{
private readonly TextWriter _writer;
public MvcAnchor(ViewContext viewContext)
{
_writer = viewContext.Writer;
}
public void Dispose()
{
this._writer.Write("</a>");
}
}
अपने विचार में आप अब क्या कर सकते हैं:
@{
using (Html.BeginLink())
{
@Html.Raw("Hello World")
}
}
जो परिणाम उत्पन्न करता है:
<a>Hello World</a>
इस विस्तार से थोड़ा अपने सटीक आवश्यकता से निपटने के लिए:
public static MvcAnchor BeginLink(this HtmlHelper htmlHelper,
string href,
string title)
{
var tagBuilder = new TagBuilder("a");
tagBuilder.Attributes.Add("href",href);
tagBuilder.Attributes.Add("title", title);
htmlHelper.ViewContext.Writer.Write(tagBuilder
.ToString(TagRenderMode.StartTag));
return new MvcAnchor(htmlHelper.ViewContext);
}
और हमारे विचार:
@{
using (Html.BeginLink("http://stackoverflow.com", "The Worlds Best Q&A site"))
{
@Html.Raw("StackOverflow - Because we really do care")
}
}
जो परिणाम पैदावार:
<a href="http://stackoverflow.com" title="The Worlds Best Q&A site">
StackOverflow - Because we really do care</a>
स्रोत
2012-05-17 14:33:28
क्या आप पूछ रहे हैं कि ऐसा कुछ करने के लिए संभव है: '@ एचटीएमएल। एक्शनलिंक (" हैलो विश्व "," माईएक्शन ")'? – CallumVass
ऐसा नहीं है। मुझे पता है कि इस तरह के परिदृश्य को संभालने के लिए BeginForm() और EndForm() प्रकार का दृष्टिकोण है, लेकिन यदि आप एक अंत टैग को भूल जाते हैं तो बड़े पैमाने पर ऐसा करने पर कोई समस्या हो सकती है। – Sanj
मुझे यकीन नहीं है कि मुझे पता है कि आपका क्या मतलब है?आप इस परिदृश्य में 'BeginForm' का उपयोग नहीं करेंगे? आप एक फॉर्म बनाने के लिए 'BeginForm' का उपयोग करेंगे, एंकर लिंक नहीं। – CallumVass