解决方法
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),即编译时间错误。