2017-06-26 2 views
0

Ma question:Comment résoudre Ajax.BeginForm appeler deux fois en utilisant asp.net mvc

  1. J'ai une page principale des champs lorsque le bouton cliquez sur Enregistrer utilisateur à l'aide Ajax.BeginForm je sauve les détails c'est succès de travail.

  2. À l'intérieur de la forme principale, il y a un bouton (tâche) lorsque l'utilisateur clique sur le bouton fenêtre partielle va s'ouvrir puis ils vont remplir certains détails. lorsque le bouton de sauvegarde de la fenêtre partielle en cliquant automatiquement sur la page principale enregistrer la méthode d'action appelle ... d'abord, enregistrer les détails de sauvegarde partielle puis immédiatement son économie de détails de la page principale, puis je reçois deux fois le message avec succès. Lorsque le bouton de sauvegarde de la page principale ne clique que sur un bouton, il doit enregistrer les champs de la page principale. lorsque la page partielle bouton Enregistrer cliquez dessus doit enregistrer les champs de page partielle uniquement (page partielle, sauf que je utilise jquery

page principale.

 @using (Ajax.BeginForm("savePhase", "Search", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "ChmHeaderPage",OnSuccess= "OnSuccessMain" }, new { enctype = "multipart/form-data" })) 
     { 
      @Html.HiddenFor(model => model.ChangeRequestList.FirstOrDefault().changeId); 
      @Html.HiddenFor(model => model.ChangeRequestList.FirstOrDefault().Phase); 

      <div class="col-md-offset-0 panel-body">  
       <div class="form-group"> 
        @Html.LabelFor(model => model.Importance, htmlAttributes: new { @class = "col-md-3 control-label" }) 
        <div class="col-md-3"> 
         @Html.DropDownListFor(model => model.ImportanceVal, new SelectList(Model.Importance, "OptionId", "OptionName", Model.ImportanceVal), new { @class = "form-control", @Title = "Message Need to be Show" }) 
        </div> 

        @Html.LabelFor(model => model.Urgency, htmlAttributes: new { @class = "col-md-2 control-label" }) 
        <div class="col-md-3"> 
         @Html.DropDownListFor(model => model.UrgencyVal, new SelectList(Model.Urgency, "OptionId", "OptionName", Model.UrgencyVal), new { @class = "form-control", @Title = "Message Need to be Show" }) 
        </div> 
       </div> 

       <div class="col-md-12 "> 
        @Html.Label("Enter Task*") 
        <button type="button" id="Analysisbtn" class="btn btn-link " data-toggle="modal" data-target="#myModal">Select Task</button> 



        <!-- Modal --> 
        <div id="myModal" class="modal fade" role="dialog"> 
         <div class="modal-open strech-modal-dialog"> 

          <!-- Modal content--> 
          <div class="modal-content"> 
           <div class="modal-header"> 
            <button type="button" class="close" data-dismiss="modal">&times;</button> 
            <h4 class="modal-title">Analysis</h4> 
           </div> 
           <div class="modal-body"> 
            @Html.Partial("_TaskPage") 
           </div> 

          </div> 

         </div> 
        </div> 
        </div> 
        <!-- Form actions --> 
        <div class="row panel-body"> 
         <div class="col-md-12 text-center"> 
          <button type="submit" name="buttonValue" class="btn btn-danger" value="Close">Save & Close</button> 

          <button type="submit" name="buttonValue" class="btn btn-primary" value="Save">Save</button> 

         </div> 
        </div> 

       </div> 
     } 

partielle Page:

 @model www.ChangeManagementTool.ViewModels.SearchViewModel 
     <div class="panel-group" id="accordion" role="tablist" aria- 
     multiselectable="true"> 
     <div class="panel panel-default"> 
     <div class="panel-heading" role="tab" id="headingOne"> 
     <h4 class="panel-title"> 
      <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> 
       <i class="more-less glyphicon glyphicon-plus"></i> 
       Task 
      </a> 
     </h4> 
    </div> 
    <div id="collapseOne" class="panel-collapse collapse first" role="tabpanel" aria-labelledby="headingOne"> 
     <div class="panel-body"> 

        <div class="table-responsive center-block" data-tab-content="@item.Key" style="display:@displayText"> 
         <table class="table table-responsive sena" [email protected]> 

          <tr> 
           <th>Department</th> 
           <th>Plant</th> 
           <th>Country</th> 
           <th>Responsibles</th> 
           <th>DueDate</th>         
          </tr> 

          <tbody> 

           @foreach (var analysisTask in item.Value) 
           { 

            <tr> 
             <td> 
              --DisplayFor code 
             </td> 
             <td> 
              --DisplayFor code 
             </td> 
             <td> 
              --DisplayFor code 
             </td> 
             <td> 
              --DisplayFor code 
             </td> 
             <td> 
              --DisplayFor code 
             </td> 

            </tr> 

           } 
           </tbody> 

         </table> 
        </div> 

       } 
       <div class="form-group"> 
        <div class="col-md-12 text-center"> 
         <button type="submit" id="btnSaveReal" class="btn btn-primary ">Save Task </button> 
        </div> 
       </div> 
      } 
     </div> 
    </div> 
</div> 

jquery Sauvegarder le codage

    <script type="text/javascript"> 
         $('#btnSaveReal').click(function (e) { 

    var listex = []; 
    debugger; 
    $('#RealTask tbody tr').each(function (index, ele) { 
     var saveItem2 = { 
      ChangeId: $('#ChangeIdR').val(), 
      PlantId: $('#PlantIdR' + index).val(), 
      DepartmentId: $('#DepartmentIdR' + index).val(), 
      MstTaskId: $('#MstTaskIdR' + index).val(), 
      AffectedItemId: $('#AffectedItemIdR' + index).is(":checked") 
     } 
     listex.push(saveItem2); 
    }) 

    //Save Coding 
    var url = applicationRoot + '/Search/SaveRealizationTaskdetails'; 
    $.ajax({ 
     url: url, 
     type: "POST", 
     data: JSON.stringify({ 'objmodelRel': listex, actionR: 'AnalyzeRealize' }), 
     dataType: "json", 
     traditional: true, 
     contentType: "application/json; charset=utf-8", 
     success: function (Data) { 
      if (Data.status) { 
       alert(Data.responseText); 
      } else { 
       alert(Data.responseText); 
      } 
     }, 
     error: function() { 
      alert("An error has occured!!!"); 
     } 
    }); 
}); 

function toggleIcon(e) { 
    $(e.target) 
    .prev('.panel-heading') 
    .find(".more-less") 
    .toggleClass('glyphicon-plus glyphicon-minus'); 
} 
$('.panel-group').on('hidden.bs.collapse', toggleIcon); 
$('.panel-group').on('shown.bs.collapse', toggleIcon); 

Code du contrôleur:

public ActionResult savePhase(SearchViewModel objmodel, string buttonValue) 
    { 
    save code--------------- 
    return RedirectToAction("FetchChgReqDetails"); 
    } 

    public JsonResult SaveRealizationTaskdetails(List<ChangeRequestRealizationTask> objmodelRel, string actionR) 
    { 
     --save code  
     return new JsonResult { Data = new { status = true, responseText = "Successfuly saved!" }, JsonRequestBehavior= JsonRequestBehavior.AllowGet }; 
    } 
+0

changement Vue partielle bouton type = "bouton "insted de type =" soumettre "et puis vérifier et sur la sauvegarde principale envoyer tous les détails dans ajax y compris les données de vue partielle –

+0

wow! Joshi. Merci beaucoup. erreur simple. J'ai changé de type = bouton. ça marche – SENA

Répondre

1

Selon vos questions, je vous suggère d'essayer ci-dessous ce si utile pour vous.

Premier changement bouton Vue partielle type = « button » au lieu de type = « soumettre »

et sur le formulaire principal soumettre envoyer toutes les données, y compris les données de vue partielle en utilisant AJAX