2013-02-27 3 views
0

내 페이지에 드롭 다운 목록 (DropDownListFor)과 ActionLink가 있습니다. 기본적으로, 내가 가진 문제는 내 드롭 다운 목록에서 선택한 값을 캡처하고 내 ActionLink에 ID로 전달하려고하는 것입니다. 내 코드는 다음과 같습니다.RouteValue 매개 변수 중 하나에 대해 MVC4 ActionLink에서 JavaScript를 호출 할 수있는 방법이 있습니까?

@Html.DropDownListFor(x => x.Capsules, new SelectList(Model.Capsules, "pk", "name", "pk")) 
<br /> 
@Html.ActionLink("Submit", "Create", 
    new { controller = "Process", id = /*JavaScript here to get the selected ID for the DropDownList above*/ }, 
    new { data_role = "button" }) 

내가 수행하려고 시도하는 것을 위해, 내 Html.ActionLink 호출에 JavaScript를 포함시키는 방법이 있습니까? 방법이 없거나 권장되지 않는 경우이 문제를 해결하기위한 다른 해결책을 알려주십시오. 미리 감사드립니다!

+0

:

@using(@Html.BeginForm("Create", "Process" )) { @Html.DropDownListFor(m=> m.CapsuleId, new SelectList(Model.YourModel.Capsules, "pk", "name", "pk")) <input type="submit"> } 

이 그런 다음 컨트롤러 액션이 처리 할 수 ​​

컨트롤러에서

는, 뷰의 데이터를 보유 뷰 모델을 생성 면도기를 사용하고 있습니까? –

+0

예 면도기를 사용하고 있습니다. –

답변

1

당신은 대린이의 posted an example을 가지고 자바 스크립트를 사용하여 링크를 차단을 통해이 작업을 수행 할 수 있습니다.

그러나 ActionLink를 사용하여 일부 값을 제출하려는 것처럼 보이고 원하는 값을 모두 포함하는보기 모델을 만든 다음 제출 버튼을 사용하여 모든 것을 게시하는 것이 좋습니다. 이렇게하면 ID보다 많은 데이터를 게시 할 수 있고 자바 스크립트에 의존하지 않게되며 혼합 및 매칭 대신 코드 서버를 모두 유지할 수 있습니다.

게시 한 작은 코드로 판단하십시오. 이미 모델이 있으며, 아마도 강력한 형식의 엔티티이며, Capsules라는 속성이 있습니다.

public class YourViewModel 
{ 
    YourModel YourModel { get; set; } 

    public int CapsuleId { get; set; } 
} 

이 그런 다음보기 :

[HttpPost] 
public ActionResult Create(YourViewModel model) 
{ 
    var id = model.CapsuleId; 

    // do what you're going to do with the id 
    return View(); 
} 
+0

유망 해 보입니다. 나중에 오늘 밤 당신의 제안을 구현하려고 노력할 것입니다! 감사!! –

1

이 같은 id 매개 변수에 더미 값을 넣을 수 있습니다 : 링크를 클릭하면

@Html.ActionLink("Submit", "Create", 
    new { controller = "Process", id = "dummy" }, 
    new { data_role = "button" }) 

그런 다음 그 값을 대체합니다.

// Assuming your link's id is `submit`, and the dropdown's id is `capsules` 
$('#submit').click(function() { 
    var id = $('capsules').val(); 
    $(this).href = $(this).href.replace('dummy', id); 
}); 
+0

불행히도 이것은 나를 위해 작동하지 않습니다. 다음 페이지로 전달되는 값은 -1입니다. 심지어 "id"를 실제 값으로 대체합니다. 제 경우에는 "3"입니다. 그것은 내 URL에 아무것도하지 않았다. –

+0

자바 스크립트를 디버그 하시겠습니까? 링크를 클릭하면 호출됩니까? –

+0

JavaScript를 디버깅하는 데 항상 어려움을 겪었으므로 확실하지 않습니다. 이 방법은 일종의 해결 방법 인 것 같습니다. 내가하고있는 일은 문서화 된 일반적인 방법입니다. 아니면 해결 방법이 유일한 옵션입니까? –