如何创建强类型的BeginForm?

时间:2010-05-21 06:41:26

标签: asp.net-mvc asp.net-mvc-2

我已经看到一些人使用HTML.BeginForm语法的例子:

(Html.BeginForm<Type>(action => action.ActionName(id)))

但是当我尝试这种语法时,我得到的是:

The non-generic method System.Web.Mvc.Html.FormExtensions.BeginForm(System.Web.Mvc.HtmlHelper)'
cannot be used with type arguments

我错过了什么? Visual Studio 2010,System.Web.MVC版本为v2.0.50727

2 个答案:

答案 0 :(得分:11)

您可以在MVCContrib中找到此扩展程序,更具体地说,可以在Microsoft.Web.Mvc.dll类中的Microsoft.Web.Mvc.FormExtensions程序集中找到此扩展程序。因此,请下载并在项目中包含此程序集,并在web.config文件的Microsoft.Web.Mvc部分中添加namespaces名称空间:

<namespaces>
    <add namespace="System.Web.Mvc"/>
    <add namespace="System.Web.Mvc.Ajax"/>
    <add namespace="System.Web.Mvc.Html"/>
    <add namespace="System.Web.Routing"/>
    <add namespace="System.Linq"/>
    <add namespace="System.Collections.Generic"/>
    <add namespace="Microsoft.Web.Mvc"/>
</namespaces>

您可以在自己的观看中使用它。

答案 1 :(得分:-1)

以下是您的.aspx视图中的示例:

UserController”是您的控制者 “Save()”是控制器中的操作方法。

<%
using (Html.BeginForm<UserController>(x => x.Save(null, null, Model.User.ID, null, null), FormMethod.Post, new { id = "formUser" })) {
%>
   <%= Html.AntiForgeryToken() %>
   <%: Html.ValidationSummary(true) %>
   ...
<% } %>

希望有所帮助。