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 

내가 무엇을 놓치고? 비주얼 스튜디오 2010, System.Web.MVC 버전은 여기 V2.0.50727

답변

11

이 확장 방법은 Microsoft.Web.Mvc.FormExtensions 클래스의 Microsoft.Web.Mvc.dll 어셈블리에 있으며, 더 구체적으로는 MVCContrib입니다. 그래서 다운로드하고 사용자의 프로젝트에서이 어셈블리를 포함하고 web.config 파일의 namespaces 섹션에서 Microsoft.Web.Mvc 네임 스페이스를 추가

<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

그래, 나는 이것이 올바른 길을 따라 가고 있다고 생각한다. 그러나 참조를 추가하고 네임 스페이스를 추가했지만 여전히이 오류가 발생합니다. MVCFutures가 필요한 MVCContrib입니까? – 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

관련 문제