2013-01-18 5 views
1

formcollection에 문제가 있습니다.Formcollection이 MVC 양식에서 데이터를 추출하지 않습니다

보기에 몇 가지 양식이 있고 두 개의 제출 버튼에 모두 고유 한 이름 = ""이 있습니다. 디버그에서 나는 formcollection의 컨트롤러에서 "제출 된 버튼의"이름을 제외한 모든 데이터를 얻습니다 ... 왜 그런지 모르겠지만 다른 형식으로 이것을 사용하면 잘 작동합니다. 그래서 코드를 살펴 보았지만 formcol을 사용하지 않고 formcol을 사용하는 데있어 차이점을 찾을 수 없었습니다. 나는 이름 바꾸기 버튼을 시도, 그들을 이동, 도움이 될 수 있다고 생각 참조를 추가 ... 아무것도. 제출시마다 내 조건을 건너 뛰므로 "false"와 formcollection을 내 "업로드"또는 "저장"버튼에 포함시키지 마십시오 ...

그래서 저는이 도움을 요청합니다 . 오류가 될 수있는 곳을 말해 줄 수 있습니까? 모두에게 감사드립니다!

이 컨트롤러에 있습니다

[HttpPost] 
public ActionResult EditUser(EditUserVM model, int id, FormCollection c) 
{ 
    //c["upload"] is everytime set to null, 'cos c does't contain it 
    if (c["upload"] != null) 
    { 
      //.... some code 
      return RedirectToAction("Index", "Home"); 
    } 

    if (ModelState.IsValid) 
    { 
      //.... next code 
    } 

    return View("EditUser", model); 
} 

이보기에 있습니다

@model PrukazOnline.ViewModels.EditUserVM 
@{ 
    ViewBag.Title = "EditUser"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script> 
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script> 
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script> 
@using (Html.BeginForm("EditUser", "User", null, FormMethod.Post, new { @class = "form-horizontal", id = "formstep", enctype = "multipart/form-data" })) 
{ 
    @*Here is some code - @Html.TextBoxFor(x => x.something) and @Html.ValidationMessageFor(x => x.something) - all of these are in formcollection*@ 
    . 
    . 
    . 
    . 
    <div> 
     <input type="submit" value="Nahrát" class="upl" name="upload" id="upload" /> 
    </div> 

    <div class="submit_buttons"> 
      <input type="submit" name="save" id="save" value="Uložit" /> 
    </div> 
} 

답변

0

문제는 하나의 형태로 입력을 제출 여러입니다. FormCollection의 버튼 만 클릭 할 것입니다.

보기 :

<div> 
    <input type="submit" value="Nahrát" class="upl" name="upload" id="upload" /> 
</div> 

<div class="submit_buttons"> 
     <input type="submit" name="save" id="save" value="Uložit" /> 
</div> 

컨트롤러 :

[HttpParamAction] 
[HttpPost] 
public ActionResult Upload(EditUserVM model) 
{ 
    ... 
} 

[HttpParamAction] 
[HttpPost] 
public ActionResult Save(EditUserVM model) 
{ 
    ... 
} 

나는이 경우에는이 같은 각 버튼에 대해 서로 다른 작업을 사용하는 것이 좋습니다, 당신은 클릭 버튼 형태의 가공 기지를 변경하려고 생각
관련 문제