2010-05-21 3 views
3

Я видел несколько примеров людей, использующих этот синтаксис для Html.BeginForm:Как создать строго типизированный 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

ответ

11

Вы найдете эти методы расширения в MVCContrib и более конкретно в сборке Microsoft.Web.Mvc.dll в классе Microsoft.Web.Mvc.FormExtensions. Так скачать и включить эту сборку в проект и добавить Microsoft.Web.Mvc имен в namespaces секции файла web.config:

<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> 

и вы сможете использовать его в своих взглядах.

+0

Да, я думаю, что это по правильным дорожкам. Однако я добавляю ссылку и добавляю пространство имен и все еще получаю эту ошибку. Мне нужен MVCContrib, или MVCFutures? – itchi

+0

Да, фьючерсы работали. http://aspnet.codeplex.com/releases/view/41742 – itchi

-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) %> 
    ... 
<% } %> 

Надеюсь, что это поможет.

+0

Жалоба потому, что у BeginForm нет этой подписи. «невозможно использовать с аргументами типа» – itchi

Смежные вопросы