Как решить Ajax.BeginForm, дважды вызывая с помощью asp.net mvc

Мой вопрос:

  1. У меня есть главная страница, некоторые поля, когда пользователь нажимает кнопку сохранения, используя Ajax.BeginForm, я сохраняю детали, это работает успешно.

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

  3. когда нажата только кнопка сохранения главной страницы, следует сохранить поля главной страницы. при частичном нажатии кнопки сохранения страницы следует сохранять только частичные поля страницы (частичное сохранение страницы, я использую jquery.

Главная страница:

     @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>
        }

Частичная страница:

        @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" id=@item.Key>

                            <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 Сохранить кодирование

                  <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);

Код контроллера:

    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 };
    }

1 ответ

Решение

В соответствии с вашими вопросами, я предлагаю вам попробовать ниже, если это полезно для вас.

Сначала измените Частичное представление кнопка type="button" вместо type="submit"

и в главной форме отправить отправить все данные, включая данные частичного просмотра, используя AJAX

Другие вопросы по тегам