解决方法
Html.BeginForm帮助程序方法包含一个
couple overloads,其目的是使写入路由表单更容易。它意识到MVC的结构,并确保其目标是控制器和动作。这只是一句句法糖:
<form method="post" action="@Url.Action(...)">
以微软的话说:
The ASP.NET MVC framework includes helper methods that provide an easy way to render HTML in a view.
当然,没有人让你使用它们。它只是一个偏好的问题。事实上,在MVC的早期阶段,许多WebForms开发人员从服务器控件a-la< asp:TextBox>等人,并坚持用手编写一切。
强烈建议您使用帮助程序,因为他们知道表单验证。 Html.BeginForm只是为您提供一致的方式来开始和完成您的表单:
@using(Html.BeginForm()) { @Html.LabelFor(...) @Html.EditorFor(...) }
Html.BeginForm返回一个IDisposable对象,允许你把它包装在C#using语句中。当使用退出时,处理将自动为您调用Html.EndForm()。由于Html.EndForm返回void,所以从Razor调用是不方便的:
@Html.BeginForm() <formStuff> @{Html.EndForm();}
一个简单的@ Html.EndForm()将转入Write(Html.EndForm()) – >写(void),即编译时间错误。