2013-02-09 2 views
1

Я работаю как asp.net MVC 2 приложения. У меня есть форма, как это:Получение jsonresult действие результат в jquery кнопку нажмите

<% using (Html.BeginForm("SaveCallRecording", "Recording", FormMethod.Post, new { id = "frmAddCallRecording", name = "frmAddCallRecording" })) 
          {%> 

     <tr> 
            <td> 
            </td> 
            <td> 
             <input type="button" id="btnCall" title="Call" value="Call" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" /> 
             <input type="button" id="btnNewCall" title="New Call" value="New Call" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" /> 
            </td> 
           </tr> 
          </table> 
          <%} %> 

У меня есть это в document.ready

$("#btnCall").click(function() { 
       var CallStatus = $("#txtCallStatus").val(); 
       if (CallStatus == 'READY') { 
        if ($("#isUniquePassword").is(':checked') && $("#UniquePassword").val() == '') { 
         $("#dialog-RecipientEmail-error").dialog("open"); 
        } 
        else { 
         $.ajax({ 
          type: "POST", 
          dataType: "json", 
          url: "/account/getGenericPassword", 
          success: function (data) { 
           if (data == null || data == "") { 
            if ($('#isGenericPassword').is(':checked')) { 
             $("#dialog-add-generic-password").dialog("open"); 
            } 
           } 
           else { 
             $("#frmAddCallRecording").submit(); 
           //after this I want to show alert based on result         
           } 
          } 
         }); 
        } // end of isUniquePassword if 
       } // end of call status if 
       else if (CallStatus == 'NOT SET') { 
        $("#dialog-required-fields").dialog("open"); 
       } 
      }); 

и контроллер, как это:

[Authorize] 
     [HttpPost] 
     public JsonResult SaveCallRecording(CallRecording recording, FormCollection form) 
     { 
    return Json("record saved!"); 
      } 

После ActionResult SaveCallRecording выполняется, я хочу показать успешное сообщение или сообщение об ошибке. Как мне это сделать ? Если я пытаюсь $ .ajax, мне нужно сформировать данные формы вручную, используя `data: {" item ":" value1 ", ....}. Я пробовал использовать $ .post, но мне нужно также передавать данные вручную. Если я делаю btnCall как кнопку отправки вместо кнопки, то проверка не выполняется.

Я хочу:

1) Подтвердить форму первого и показывать оповещения, если форма не подтверждена. 2) данные формы сообщения для json Метод действия SaveCallRecording 3) Получите сообщение об успешном завершении или сбое из метода действий и покажите как предупреждение

Пожалуйста, предложите решение.

ответ

0

Вы можете начать с размещением этой формы в частичном (_SaveCallRecordingForm.ascx):

<% using (Html.BeginForm("SaveCallRecording", "Recording", FormMethod.Post, new { id = "frmAddCallRecording", name = "frmAddCallRecording" })) { %> 
    <tr> 
     <td></td> 
     <td> 
      <input type="button" id="btnCall" title="Call" value="Call" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" /> 
      <input type="button" id="btnNewCall" title="New Call" value="New Call" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" /> 
     </td> 
    </tr> 
<% } %> 

Кроме того, если вы ожидаете, чтобы быть в состоянии сделать некоторые валидации я бы порекомендовал вам сделать это частичное сильно типизированный к вашей модели CallRecording и используйте Html-помощники для создания полей ввода в этой форме. Вы также можете использовать validationMessageFor helper для создания заполнителей для ошибок.

И тогда вы могли бы AJAXify эту форму:

else { 
    var $form = $("#frmAddCallRecording"); 
    $.ajax({ 
     url: $form.attr('action'), 
     type: $form.attr('method'), 
     data: $form.serialize(), 
     success: function(result) { 
      if (result.success) { 
       alert('Thanks for submitting'); 
      } else { 
       $('#someContainerOfYourForm').html(result); 
      } 
     } 
    }); 
} 

и имеют свое действие контроллера выполнять проверку и возвращать либо JsonResult (в случае успеха) или PartialView со списком ошибок:

[Authorize] 
[HttpPost] 
public ActionResult SaveCallRecording(CallRecording recording) 
{ 
    if (!ModelState.IsValid) 
    { 
     // There were validation errors => let's redisplay the form 
     return PartialView("_SaveCallRecordingForm", recording); 
    } 

    // at this stage we know that the model is valid => do some processing 
    // and return a JsonResult to indicate the success 
    return Json(new { success = true }); 
} 
+0

Мне нужно выполнить несколько проверок до того, как метод записи сбережений, например, один из них имеет значение Готово, а другое поле имеет значение, когда установлен соответствующий флажок. Как я могу это сделать? – DotnetSparrow

+0

Вы можете выполнить эти проверки непосредственно перед отправкой запроса AJAX. В моем примере я показал вам, как отправить этот запрос AJAX, но вы можете легко выполнить проверки на клиенте и условно отправить этот запрос AJAX. –

+0

Позвольте мне проверить это подробно. – DotnetSparrow

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