HTML.BeginForm 및 속성 추가


139

enctype="multipart/form-data"를 사용하여 생성 된 양식 에 추가 하려면 어떻게해야 <% Html.BeginForm(); %>합니까?

답변:


251

htmlAttributes의 일부로

Html.BeginForm(
    action, controller, FormMethod.Post, new { enctype="multipart/form-data"})

또는 null매개 변수없이 BeginForm ()과 동일한 기본 대상을 얻도록 조치 및 제어기를 전달할 수 있습니다 .

Html.BeginForm(
    null, null, FormMethod.Post, new { enctype="multipart/form-data"})

45
참고로, 액션과 컨트롤러가 매개 변수없이 BeginForm ()과 동일한 기본 대상을 얻도록 null을 전달할 수 있습니다.
브래드 로빈슨

2
@ 브래드 : 좋은 의견! 그것을 anwer에 통합했습니다.
chiccodoro

안녕하세요, enctype을 일본어 인코딩 형식 인 Shift-JIS로 어떻게 지정합니까?
Govind

페이지 작업에 따라 URL을 조작 할 수 있으므로 액션 / 컨트롤러를 항상 선호합니다. 따라서 액션 / 컨트롤러를 null로 설정하면 예기치 않은 동작이 발생할 수 있습니다.
César León

19

강력한 형식의 버전에 다음 구문을 사용할 수도 있습니다.

<% using (Html.BeginForm<SomeController>(x=> x.SomeAction(), 
          FormMethod.Post, 
          new { enctype = "multipart/form-data" })) 
   { %>

1
현재 버전 (RC1)에서는이 작업을 수행 할 수 없습니다.
Jason Bunting

다음은 무엇입니까? (그래서 어떻게해야합니까? 또 다른 dll이 필요합니까? MVC 선물 또는 무엇인가?
Pure.Krome

4
그렇습니다. 실제로 ... 강력한 유형의 모든 표현 방식이 선물 어셈블리에 있다고 생각합니다 ( aspnet.codeplex.com/Release/… ).
dp.

@Jason, dp : Nick의 확장 방법을 사용하면 이러한 종류의 서명도 제공 할 수 있습니다. 여전히 미래를 포함시키는 것이 더 나은 접근법입니다.
chiccodoro

13

나는 이것이 오래되었다는 것을 알고 있지만 폼을 반복해서 만들어야하는 경우 사용자 정의 확장을 만들 수 있습니다.

public static MvcForm BeginMultipartForm(this HtmlHelper htmlHelper)
{
    return htmlHelper.BeginForm(null, null, FormMethod.Post, 
     new Dictionary<string, object>() { { "enctype", "multipart/form-data" } });
}

그런 다음 사용법은

<% using(Html.BeginMultipartForm()) { %>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.