2012-10-17 3 views
0

저는 ASP MVC에 대한 도움이 필요합니다.ActionLink by form 제출 방법

<% using (Html.BeginForm(null,null,FormMethod.Post)) {%> 
    <p> 
     <input type="submit" value="Choose" /> 
      . 
      . 
      . 
      <%=Html.ActionLink("Save", "Index")%> 
    </p> 
<% } %> 

그리고 내가 드롭 다운리스트에서 selectedValue를 얻을 필요가 있기 때문에 내가 그 ActionLink하여 양식을 제출해야하고 어떻게와 방법에 FormCollection 또는 매개 변수에서 다른 그 작업을 수행 할 수있는 방법을 알고하지 않습니다 내가 가진 속성 POST.

그래서 액션 링크를 클릭 한 후이 함수를 호출해야합니다.

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Index(FormCollection formValues) 
    { 
    } 

나는 JQuery와 및 Ajax.ActionLink 뭔가를 시도했지만 모든 인덱스의 GET 방법을했다. ( new { onclick = "$(this).parents('form').first().submit();" - 저를 위해 일하지 않았습니다 - GET 메서드라고도 함)

답변

1

양식의 submit을 호출 한 다음 false를 반환해야합니다. 자바 스크립트 :

$(function() { 
    $('find-your-link').click(function(e) { 
     e.preventDefault(); 
     $(this).parents('form').first().submit(); 
    }); 
}); 

그러면 GET URL로 전송하지 않고 양식을 제출해야합니다.

0

actionlink는 기본적으로 항상 GET입니다. 상자에서 나온 POST로 변환 할 수는 없습니다.

설정과 관련하여 일반 제출 버튼을 사용하면 드롭 다운 목록의 값이 FormCollection에 있어야합니다.

다른 방법은 메서드 매개 변수를 formvalues와 일치시키는 것입니다. 예를 들어 "foo"라는 드롭 다운 목록이있는 경우 Index(string foo) 메서드를 사용할 수 있습니다. MVC는 dropdownlist-value가 동일한 이름을 가진 경우 해당 매개 변수에 매핑합니다. formvalues의 유형이 매개 변수 유형으로 구문 분석 될 수 있어야한다는 것을 명심하십시오. 귀하의 경우에는 드롭 다운 목록의 값 유형이 int, your method-parameter should be of type int`입니다. (양식 배열을 문자열 형식 매개 변수로 구문 분석 할 수는 없습니다).

은 또한 그때 [AcceptVerbs(HttpVerbs.Post)]

는 Incase의 당신이 ActionLink를 사용하고 싶어 더 읽기 [HttpPost]과 방법을 속성에 조언을, 당신은 결국 formvalues를 제출하기 위해 자바 스크립트 기술 작업을 시작해야합니다.

팁 : POST 방법의 첫 번째 줄에 중단 점을 설정하고 this에서 시계를 수행하면 몇 가지 기준점을 통해 제출 된 값으로 이동 한 다음 ValueProviders을 찾을 수 있습니다.

+0

대단히 감사합니다! beginForm에서 실수를했는데 jquery로 제출하면 문제가 없으며 Jason이 말하는 방법을 false로 반환해야합니다. – Prazi

1

이 시도 :

HTML/C 번호를 :

<% 
using (Html.BeginForm(null,null,FormMethod.Post, new { id = "myform" })) 
{%> 
    <p> 
     <input type="submit" value="Choose" /> 
     . 
     . 
     . 
     <%=Html.ActionLink("Save", "Index", null, new { id="action-save" })%> 
    </p> 
<% } %> 

JS를 :

$(function() { 

    $('#action-save').bind('click', function(event) { 
     $('#myform').submit();  
     return false; 
    }); 

});