2013-08-15 3 views
0

Мне нужно отправить данные через AJAX, но только пустая строка достигает метода ActivateUser.Указать форму отправить данные

Вот Markup

@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

Try переключения это:

@Html.Hidden("Username") 

к этому:

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

Параметр для вашего действия в нижнем регистре, и я считаю, что это является чувствительным к регистру.

Кроме того, этот второй параметр, который я передаю, является параметром value. Без этого, я считаю, что структура будет искать свойство Username на Model. Но здесь у вас есть свойство имени пользователя на item. Таким образом, структура не сможет найти имя пользователя даже при коррекции в нижнем регистре. Вы должны явно передать значение в этом случае.

Вы можете проверить, что вы создаете правильную вещь, просмотрев сгенерированный HTML-код в своем браузере. Вы хотите убедиться, что ваше поле ввода действительно называется username и что его значение фактически является именем пользователя текущего пользователя.

+0

Отлично, он работал thx очень :) – Knerd

Смежные вопросы