yolu yapacağını olduğunu dönüş türü olduğunu MvcForm
impliments böylece IDisposable
bir using
deyimi içinde kullanıldıklarında ait Dispose
yöntem MvcForm
, </form>
etiketini kapatır.
Tam olarak aynı şeyi yapan bir uzantı yöntemi yazabilirsiniz.
İşte bir tane daha göstermeye yazdım.
Öncelikle, uzatma yöntemi:
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);
}
}
Ve işte yeni tip, MvcAnchor: En görünümlerinde
public class MvcAnchor : IDisposable
{
private readonly TextWriter _writer;
public MvcAnchor(ViewContext viewContext)
{
_writer = viewContext.Writer;
}
public void Dispose()
{
this._writer.Write("</a>");
}
}
şimdi yapabilirsiniz:
@{
using (Html.BeginLink())
{
@Html.Raw("Hello World")
}
}
Hangi sonucu verir:
Bu Genişleyen
<a>Hello World</a>
hafifçe kesin şartı ile başa çıkmak için:
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);
}
ve görüşümüzü: sonucunu verir
@{
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>
böyle bir şey yapmak eğer onun mümkün soruyorsun? – CallumVass
Hayır öyle değil. Böyle bir senaryoyu ele almak için BeginForm() ve EndForm() tür bir yaklaşımın olduğunu biliyorum, ancak bunu büyük bir ölçekte yaptığınızda, bir son etiketi unutursanız bir soruna neden olabilirsiniz. – Sanj
Ne demek istediğimi bildiğimden emin değilim?Bu senaryoda 'BeginForm' kullanılmaz mı? Bir bağlantı oluşturmak için bir bağlantı oluşturmak için 'BeginForm' kullanılır. – CallumVass