Как мне создать строго типизированный BeginForm? - PullRequest
3 голосов
/ 21 мая 2010

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

11 голосов
/ 21 мая 2010

Методы этого расширения вы найдете в 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 голосов
/ 21 мая 2010

Вот пример, в вашем представлении .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) %>
   ...
<% } %>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...