1

jquery 파일 업 로더 (blueimp 당)를 사용하고 있는데 어떻게 index.cshtml 이외의 특정 http 포스트 백으로 포스트 백을 보낼 수 있는지 궁금합니다 (포스트는 index.cshtml을 기본값으로 사용하고 있습니다)?jquery 파일 가져 오기 방법 [httpPost] index.cshtml() 이외의 지정된 작업을 다시 게시 하시겠습니까?

예를 들어 Home/Bulk ...를 호출 할 때 파일을 선택한 후 포스트 백이 기본값 [httppost] index.cshtml() ... [httppost] bulk.cshtml()로 전달할 수 있습니까? 고마워!

보기 (Bulk.cshtml) :

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="@Url.Content("~/Scripts/jquery.ui.widget.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.iframe-transport.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.fileupload.js")" type="text/javascript"></script> 


@using (Html.BeginForm("Bulk", "Home")) // I want this to direct back to httppost:bulk handler 
{ 
<input id="fileupload" type="file" name="files" multiple="multiple"/> 
} 

컨트롤러 :

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(IEnumerable<HttpPostedFileBase> files) 
    { 
     foreach (var file in files) 
     { 
      var filename = Path.Combine(Server.MapPath("~/App_Data"), file.FileName); 
      file.SaveAs(filename); 
     } 
     return View(); 
    } 

    public ActionResult Bulk() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Bulk(IEnumerable<HttpPostedFileBase> files) 
    { 
     foreach (var file in files) 
     { 
      var filename = Path.Combine(Server.MapPath("~/App_Data"), file.FileName); 
      file.SaveAs(filename); 
     } 
     return View(); 
    } 

} 

답변

5

당신은 url 속성을 사용할 수있는 행동 당신이 제출하려는 :

$('#fileupload').fileupload({ 
    url: 'home/bulk', 
    done: function (e, data) { 
    } 
}); 
+0

네, 훌륭했습니다. 방금 url : url : @@ Url.Action ("Bulk", "Home") '을 추가하여 올바른 URL을 생성했습니다. 고마워! – JaJ

1

당신이 후 후 리디렉션 싶어 찾으셨습니까? 아마도 Post-Redirect-Get 패턴을 사용하는 것과 같습니다. 다른 반환을 유의하십시오.

[HttpPost] 
public ActionResult Bulk(IEnumerable<HttpPostedFileBase> files) 
{ 
    foreach (var file in files) 
    { 
     var filename = Path.Combine(Server.MapPath("~/App_Data"), file.FileName); 
     file.SaveAs(filename); 
    } 
    return RedirectToAction("Bulk"); 
} 

편집

아, 난을 참조하십시오. 이것은 html 양식이 올바르게 설정되지 않았기 때문에 가능합니다. Darin이 제안한 것처럼 jQuery를 사용할 수 있습니다. 당신은 HTML 헬퍼를 사용하고자하는 경우, 당신은이 작업을 수행 할 수 있습니다 :이 파일이 컨트롤러로 전송 될 수 있도록 촉진으로

@using (Html.BeginForm("Bulk", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 

멀티 파트/양식 데이터가 중요하다. 표시하기 위해 플러그인을 설정할 때

+0

안녕, 아니하지 포스트 후. 게시물은 항상 대량 처리기가 아니라 대량 처리기가 아니라 색인으로 되돌아옵니다. – JaJ

+0

@JaJ - 알았어, 질문에서 나에게 명확하지 않았다. 헬퍼를 설정하는 방법은 내 편집을 참조하십시오. –