2010-06-25 22 views
8

yüzdenHtmlHelper.BeginForm() nasıl kullanılır? Tamam

<% using (Html.BeginForm()) { %> 
    <input type="text" name="id"/> 
<% } %> 

<form> 
    <input type="text" name="id"/> 
</form> 

yani nasıl sonunda </form> eklese üretmek nasıl bilmek istiyorum? Ben codeplex baktım ve htmlhelper içinde bulamadım. Bir EndForm yöntemi var, ancak yukarıdakiler bunu nasıl çağırıyor?

Bunun nedeni, bir htmlhelper uzantısı oluşturmak, ancak bir kullanımın sonunu nasıl kapatacağımı bilmiyorum.

bir Yardım takdir :)

cevap

16

BeginFormDispose içinde EndForm çağıran bir IDisposable döndürür. Eğer using(Html.BeginForm()) { ... } yazarken

, derleyici sırayla EndForm çağırır ve <form> etiketi kapatır, hangi Dispose çağıran bir finally blok oluşturur.

Bu efekti, IDisposable'u uygulayan kendi sınıfınızı yazarak çoğaltabilirsiniz.

+0

Şaşırtıcı derecede hızlı, bunu düşünmeliydin! Ben 8 dakika için cevap olarak işaretleyemiyorum :) – Jose

+2

+1, ama pedantry için, 'EndForm() 'teknik olarak" Dispose() "(' yazıyor) ters çevirir; –

1

SLaks'ların dediği gibi, Object .BeginForm() nesnesinin döndürdüğü IDisposable arabiriminde Dispose yöntemini çağıran EndForm çağıran sonuncu bir blok oluşturur.

BeginForm, yanıt için HTML'yi yazmak için Rseponse.Write kullanır.

EndForm, kapanış etiketini Yanıt'a yazar. Bu nedenle, BeginForm ve Dispose yönteminden dönen yapıcı arasında gerçekleşen her şey, form etiketleri arasında düzgün bir şekilde yanıt yazılacaktır.

İlgili konular