Проблема: 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)
Модель здесь по-прежнему нулевая, она не передается из частичного представления .. ни один из входных данных пользовательского интерфейса не был отражен
Пожалуйстапомощь