Почему модель PartialView из Custom Window не передается в контроллер для сохранения?но он правильно отображает для просмотра - PullRequest
0 голосов
/ 19 сентября 2019

Проблема: Viewmodel (ViewModel.cs) из всплывающего окна Partial View (_ReviewChecklistDetails.cshtml) не передается параметру в методе post (UpdateReview) в контроллере (controller.cs).Основной вид (_Review.cshtml) использует ту же модель представления и правильно отображен на _ReviewChecklistDetails.cshtml, когда он был для чтения, но когда я пытаюсь сохранить, он не может обновиться, поскольку модель не передается вметод обновления.

Вот код:

ViewModel.cs

public class ViewModel
{
    public ViewModel()
    {
        EApp = new EApp();
        ReviewStagesList = new List<ReviewStage>();
        ReviewStage = new ReviewStage();
        ReviewChecklist = new ReviewChecklist();
    }

_ReviewChecklistDetails.cshtml

    @using (Html.BeginForm("UpdateReview", "Controller", FormMethod.Post, new { id = "ReviewCheckListPartial" }))
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="col-auto">
    <div class="form-group">
    <div class="row">
    @Html.ExtLabelFor(model => model.CSLC_StagesList.FirstOrDefault().CSLCStage)
        @Html.DisplayFor(model => model.CSLC_StagesList.FirstOrDefault().CSLCStage)
    </div>

<h5> Checklist : </h5>
<div class="form-group row">
    <div class="col-sm-6">
        @Html.EditorFor(model => model.ReviewChecklist .RiskAssessmentCheck, new { pad = 3 })
        @Html.EditorFor(model => model.CSLC_Checklist.CustomerTermConditionCheck, new { pad = 3 })
        @Html.EditorFor(model => model.ReviewChecklist .SubContractCheck, new { pad = 3 })
        @Html.EditorFor(model => model.ReviewChecklist .NonDisclosureAgreementCheck, new { pad = 3 })
    </div>

 @Html.HiddenFor(model => model.CSLC_Checklist)
@Html.HiddenFor(model => model.CSLC_StagesList)
@Html.HiddenFor(model => model.CSLC_Checklist.RiskAssessmentCheck)
@Html.HiddenFor(model => model.CSLC_Checklist.CustomerTermConditionCheck)
@Html.HiddenFor(model => model.CSLC_Checklist.SubContractCheck)
@Html.HiddenFor(model => model.CSLC_Checklist.NonDisclosureAgreementCheck)
  </div>

    <div style="float:right; text-align:right; padding-right: 10px; margin-top:5px">
        <button name="submit" type="button" class="btn btn-info float-right" value="" onclick="ReviewCheckListSave()"><i class="fa fa-folder-open"></i>Save</button>
</div>


   <script type="text/javascript">

    function ReviewCheckListSave() {
     var form = $("#ReviewCheckListPartial");
     $.ajax({
        type: "POST",
        url: '@Url.Action("UpdateReview", "Controller")',
        data: form.serialize(),
        dataType: 'json',
        success: function (result) {
            alert("Save Successful")
        },
        error: function (result) {
            alert("Save Error")
        }
    });
    //parent.$('#CheckListDetails').data('kendoWindow').close();
}
 </script>

Controller.cs

 [AcceptVerbs(HttpVerbs.Post)]
 public ActionResult UpdateReview([DataSourceRequest]DataSourceRequest request, ViewModel model)
 {
     //if (ModelState.IsValid)
     //{
     ReviewChecklist ReviewcheckListmodel = new ReviewChecklist();
     ReviewcheckListmodel = model.ReviewChecklist;
     ReviewcheckListmodel .LatestReviewStage = model.ReviewStage.Stage;
     ReviewcheckListmodel .LatestStageVersion = model.ReviewStage.Version;
     model.ReviewChecklist = ReviewcheckListmodel;

     TransactionService.UpdateCheckList(model, base.UserId);
     //}
     return Json(new[] { model }.ToDataSourceResult(request, ModelState));}

TransactionService.cs

public ResultModel UpdateCheckList(ViewModel model, int loginID)
{                    
  Context.ReviewStages.AddOrUpdate(model.ReviewStagesList.FirstOrDefault());
    Context.ReviewChecklists.AddOrUpdate(model.ReviewChecklist);
    Context.SaveChanges();
    return new ResultModel<ViewModel>(model);            
}

Я читал по той же теме, но она не работает.Ожидается:

public ActionResult UpdateReview([DataSourceRequest]DataSourceRequest request, ViewModel model)

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

Пожалуйстапомощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...