2013-08-15 4 views
0

AJAX를 통해 데이터를 제출해야하지만 빈 문자열 만 ActivateUser 메소드에 도달해야합니다. 여기양식 제출 데이터 지정

는 마크 업

@model String 
<div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
      <h4 class="modal-title">Benutzer aktivieren</h4> 
     </div> 
     <div class="modal-body"> 
      <div id="activateresult"></div> 
      <div style="display: none" id="activateUserSuccess" class="alert alert-success">Der Benutzer konnte erfolgreich aktiviert werden :)</div> 
      <div style="display: none" id="activateUserFailure" class="alert alert-danger">Leider konnte der Benutzer nicht aktiviert werden :(</div> 
      <div class="list-group"> 
       @foreach (var item in @deactivatedUsers) { 
        using (Ajax.BeginForm("ActivateUser", "Settings", new AjaxOptions() { 
         HttpMethod = "POST", 
         OnSuccess = "activateSuccess(response)", 
         OnFailure = "activateFailure(jqXHR, textStatus, errorThrown)", 
         UpdateTargetId = "activateresult" 
        }, new { 
         @class = "list-group-item" 
        })) { 
        <h4> 
         @item.Username 
         @Html.Hidden("Username") 
        </h4> 
        <input class="btn btn-success" type="submit" name="@item.ID" value="Aktivieren" /> 
        } 
       } 
      </div> 
     </div> 
     <div class="modal-footer"> 
      <button type="button" class="btn btn-primary" data-dismiss="modal">Fertig</button> 
     </div> 
    </div> 
</div> 

입니다 그리고 여기 컨트롤러 방법

[HttpPost] 
public ActionResult ActivateUser(string username) { 
    try { 
     customerModel.ActivateUser(username); 
     return new JsonResult() { Data = true }; 
    } catch (Exception ex) { 
     return new JsonResult() { Data = false }; 
    } 
} 

당신 수있는 내가 잘못 뭐하는 거지 github

에 전체 코드? 이 전환

+1

'item.Username'의 값을 사용하여 숨겨진 필드를 채워야합니다. 또한 * * 확실하지 않지만 이름이 대소 문자를 구분한다고 생각합니다. 그래서 그것은'username'이어야합니다. –

답변

1

시도 : 이것에

@Html.Hidden("Username") 

:

@Html.Hidden("username", item.Username) 

액션에 대한 매개 변수가 소문자, 나는 그것이 대소 문자를 구분 있다고 생각합니다.

또한 두 번째 매개 변수는 value 매개 변수입니다. 그것 없이는 프레임 워크가 에있는 Username 속성을 찾을 것입니다. 하지만 여기서 사용자 이름 속성은 item입니다. 따라서 프레임 워크는 소문자 수정을 사용해도 사용자 이름을 찾을 수 없습니다. 이 경우 값을 명시 적으로 전달해야합니다.

브라우저에서 생성 된 HTML을보고 올바른 것을 생성하는지 확인할 수 있습니다. 입력 필드의 이름이 실제로 username이고 그 값이 실제로 현재 사용자의 사용자 이름인지 확인하려고합니다.

+0

위대한, 그것은 thx 매우 효과 :) – Knerd