在模态中加载模型只能工作一次
我有这个烦人的问题,我一直试图修复过去几晚。 到目前为止没有运气。 我有一个视图与模态和局部视图,呈现在模态中。 在单击表格中的按钮时,我根据传递给控制器的参数向部分视图填充数据。 第一个很好,按钮调用控制器 – >控制器将模型传递给partialview – >模式打开,右侧数据在字段中。
当我单击另一条记录上的按钮时,将打开模态并显示旧数据。 未再次调用控制器,因此数据不会刷新。 问题是,如果我使用shift + f5刷新页面,它会再次工作一次。 所以它似乎是一个缓存问题。
到目前为止我尝试过 – 在我的控制器和方法中禁用缓存 – 调用javascript方法从我的模态中删除数据 – 使用其他类型的模态
代码索引视图
List of registrations
@Html.ActionLink("Create New", "Create", null, new { @class = "btn btn-primary btn-xs" }) @Html.DisplayNameFor(model => model.Date) @Html.DisplayNameFor(model => model.Car.Kenteken) @Html.DisplayNameFor(model => model.DepartureLocation) @Html.DisplayNameFor(model => model.ArrivalLocation) @Html.DisplayNameFor(model => model.Distance) @Html.DisplayNameFor(model => model.Allowance) @foreach (var item in Model) { @Html.DisplayFor(modelItem => item.Date) @Html.DisplayFor(modelItem => item.Car.Kenteken) @Html.DisplayFor(modelItem => item.DepartureLocation) @Html.DisplayFor(modelItem => item.ArrivalLocation) @Html.DisplayFor(modelItem => item.Distance) @Html.DisplayFor(modelItem => item.Allowance) @Html.ActionLink("Edit", "Edit", new { id = item.CarId }, new { @class = "btn btn-white btn-sm" }) @Html.ActionLink("Delete", "Delete", new { id = item.CarId }, new { @class = "btn btn-white btn-sm" }) @Html.ActionLink("Copy", "CopyTripRegistrationModal", "TripRegistration", new { registrationId = item.RegistrationID }, new { @class = "img-btn-addnote modal-link btn btn-white btn-sm" }) }
X
使用Javascript
$(function () { $('body').on('click', '.modal-link', function (e) { e.preventDefault(); $(this).attr('data-target', '#modal-container'); $(this).attr('data-toggle', 'modal'); }); $('body').on('click', '.modal-close-btn', function () { $('#modal-container').modal('hide'); }); debugger; $("#modal-container").on("hidden.bs.modal", function () { $(".modal-body").removeData(); }); });
局部视图
@using (Html.BeginForm("Create", "TripRegistration")) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) @Html.HiddenFor(model => model.CarId) @Html.LabelFor(model => model.Date, new { @class = "control-label col-md-2" }) @Html.EditorFor(model => Model.Date, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Date) @Html.LabelFor(model => model.DepartureLocation, new { @class = "control-label col-md-2" }) @Html.EditorFor(model => model.DepartureLocation) @Html.ValidationMessageFor(model => model.DepartureLocation) @Html.LabelFor(model => model.DepartureZipcode, new { @class = "control-label col-md-2" }) @Html.EditorFor(model => model.DepartureZipcode) @Html.ValidationMessageFor(model => model.DepartureZipcode) @Html.LabelFor(model => model.ArrivalLocation, new { @class = "control-label col-md-2" }) @Html.EditorFor(model => model.ArrivalLocation) @Html.ValidationMessageFor(model => model.ArrivalLocation) @Html.LabelFor(model => model.ArrivalZipcode, new { @class = "control-label col-md-2" }) @Html.EditorFor(model => model.ArrivalZipcode) @Html.ValidationMessageFor(model => model.ArrivalZipcode) @Html.LabelFor(model => model.Distance, new { @class = "control-label col-md-2" }) @Html.EditorFor(model => model.Distance) @Html.ValidationMessageFor(model => model.Distance) }
控制器动作
[NoCache] public PartialViewResult CopyTripRegistrationModal(int registrationId) { var tripRegistration = _tripRegistrationService.getTripRegistrationById(registrationId); var tripRegistrationVM = AutoMapper.Mapper.Map(tripRegistration); return PartialView("_CopyTripRegistration", tripRegistrationVM); }
我已将“[OutputCache(Duration = 0)]”添加到控制器的顶部。
我希望有人可以帮助我!
您可以显式地进行ajax调用并将其响应设置为模态体。
$(function () { $('body').on('click', '.modal-link', function (e) { e.preventDefault(); $("#modal-container").remove(); $.get($(this).attr("href"), function (data) { $(' ').modal(); }); }); });
这将适用于您所有独特的url。
Interesting Posts