Asp.net mvc 如何使用HtmlHelper.BeginForm()工作?

Asp.net mvc 如何使用HtmlHelper.BeginForm()工作?,asp.net-mvc,html-helper,Asp.net Mvc,Html Helper,好的,我想知道怎么做 <% using (Html.BeginForm()) { %> <input type="text" name="id"/> <% } %> 产生 <form> <input type="text" name="id"/> </form> 即如何在末尾添加?我在codeplex中查找,但在htmlhelper中没有找到它。有一个EndForm方法,但是上面的方法如何调用它呢 原因是

好的,我想知道怎么做

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

产生

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

即如何在末尾添加
?我在codeplex中查找,但在htmlhelper中没有找到它。有一个EndForm方法,但是上面的方法如何调用它呢

原因是我想创建一个htmlhelper扩展,但不知道如何在使用结束时结束


任何帮助都将不胜感激:)

BeginForm
返回一个
IDisposable
,该IDisposable在
Dispose
中调用
EndForm

当您使用(Html.BeginForm()){…}编写
时,编译器最终生成一个
块,该块调用
Dispose
,然后调用
EndForm
并关闭
标记


您可以通过编写自己的类来实现
IDisposable

来复制这种效果,就像SLaks所说的那样,它生成一个finally块来调用EndForm,EndForm调用object.BeginForm()返回的IDisposable接口上的Dispose方法

BeginForm使用rsepose.Write将HTML写入响应


EndForm将结束标记写入响应。因此,在从BeginForm返回的构造函数和Dispose方法之间发生的任何事情都将正确地写入表单标记之间的响应。

速度惊人,应该想到这一点!我无法在8分钟内将此标记为已回答:)+1,但为了学究的兴趣,
EndForm()
技术上调用
Dispose()
(它写出
),而不是相反;)