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()
(它写出
),而不是相反;)