1

컨트롤러 ...T4MVC Html.BeginForm는

[HttpPost] 
public virtual ActionResult PickAColour(ColourModel model, 
             string imgbtn, string returnUrl) { 

하고 뷰 ... 내가 imgbtn를 통과하지 않았기 때문에

이제
@using (Html.BeginForm(MVC.Home.PickAColour(Model,"",(string)ViewBag.ReturnUrl))) { 
    @Html.LabelFor(m => m.SomeProperty) 
    @Html.TextBoxFor(m => m.SomeProperty) 
    ... 
    ... 
    <p>Now pick a colour</p> 
    <input type="image" name="imgbtn" src="@Links.Content.Images.A_png" value="A"/> 
    <input type="image" name="imgbtn" src="@Links.Content.Images.B_png" value="B"/> 
    <input type="image" name="imgbtn" src="@Links.Content.Images.C_png" value="C"/> 
    <input type="image" name="imgbtn" src="@Links.Content.Images.D_png" value="D"/> 
    <input type="image" name="imgbtn" src="@Links.Content.Images.E_png" value="E"/> 
    <input type="image" name="imgbtn" src="@Links.Content.Images.F_png" value="F"/> 
} 

이 작동하지 않습니다 제출 매개 변수를 메소드에 추가하십시오. 나는 그것을하는 올바른 방법이 무엇인지 모른다.

답변

2

당신은 올바른 메서드 오버로드를 사용합니다 복잡한 모델 객체 Model에 관해서는

@Html.BeginForm(MVC.Home.ActionNames.PickAColour, MVC.Home.Name, 
       new { imgbtn = "", returnUrl = (string)ViewBag.ReturnUrl }, 
       FormMethod.Post, null) 

을, 당신은 위의 같은 경로 값을 사용하여 전달할 수 없습니다. 이 버튼은 ASP.NET MVC Model Binder가 작업을 수행 할 수 있도록 제출 버튼을 클릭 할 때 제출되어야합니다.

+0

디버그가 PickAColour 메서드를 입력 할 때 나는 당신의 방법을 사용하여 테스트를했지만 imgbtn = null 인 문자열을 여전히 실행합니다. 원래의 메서드 호출과 같은 결과가 보입니까? – Tom

+0

또한, Model 객체는 실제로 어느 방향 으로든 잘 돌아갑니다. returnUrl도 좋습니다. imgbtn 매개 변수 만 연결하지 않는 것 같습니다. – Tom

+0

이 매개 변수의 이름을 변경하여 테스트 해보십시오. 입력에 id = "imgbtn"을 부여하고 다시 시도하십시오. –

관련 문제