Trong dự án asp.net MVC 4 của tôi, tôi muốn an toàn một cái gì đó từ một phần xem, đó là khi người dùng nhấp vào "thêm chi tiết" . Lưu dữ liệu là không có vấn đề, đóng một phần xem là không có vấn đề, mở xem một phần không phải là một vấn đề, đó là khi mô hình của tôi là không hợp lệ (khi người dùng quên đánh dấu một cái gì đó) Kết quả là một phần của tôi là quay trở lại, nhưng không phải bên trong khung cảnh mà nó cần. Nó chỉ được xem như một trang độc lập.Khi mô hình không hợp lệ, hãy quay lại chế độ xem một phần bên trong chế độ xem, với thông báo lỗi
Xem:
@model Evaluatietool.ViewModels.EvaluatorWijzigenOPViewModel
<h3>@ViewBag.Message</h3>
@using (Html.BeginForm("ChangeEvaluator", "Ontwikkelplan"))
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.oldEvalAccount)
@Html.HiddenFor(model => model.selectedMedewerkerAccount)
@Html.HiddenFor(model => model.eval);
@Html.HiddenFor(model => model.countMedewerkers);
...
...
<div class="Buttons">
<input type="submit" value="Submit" />
@Ajax.ActionLink("Sluiten", "Evaluatorenlijst", new AjaxOptions { OnSuccess = "HideResultDiv" })
</div>
}
Bộ điều khiển:
[HttpPost]
public ActionResult ChangeEvaluator(EvaluatorWijzigenOPViewModel ewopvm)
{
if (ModelState.IsValid)
{
if (ewopvm.selectedObjects != null)
{
ewopvm.selectedObjects.Add(ewopvm.selectedMedewerkerAccount);
}
else
{
ewopvm.selectedObjects = new List<string>();
ewopvm.selectedObjects.Add(ewopvm.selectedMedewerkerAccount);
}
Ontwikkelplannen op = new Ontwikkelplannen();
Evaluaties e = new Evaluaties();
foreach (string s in ewopvm.selectedObjects)
{
op.ChangeEvaluator(ewopvm.newEvalAccount, ewopvm.oldEvalAccount, s, ewopvm.eval);
}
return RedirectToAction("Evaluatorenlijst");
}
return PartialView("EvaluatorWijzigenPartial", ewopvm);
}
Các liên kết mà các cuộc gọi xem phần
@Ajax.ActionLink(item.Evaluator1.Naam, "EvaluatorWijzigenPartial", new { id = item.ID, eval = true }, new AjaxOptions { UpdateTargetId = "EvaluatorWijzigen", OnComplete = "ShowResultDiv"})
Nếu im sử dụng phương pháp này, validator.unobtrusive.parse() bị gỡ bỏ khỏi vie phần w. Nó ảnh hưởng đến các điều khiển thả xuống chọn. Ngay cả khi tôi tải validator.unobtrusive.parse(), tôi vẫn không thể giải quyết vấn đề này. Bất kỳ ý tưởng cho việc này. $ ('# someDivThatCOntainsYourForm'). html (kết quả); (==> Nếu tôi xóa điều khiển này hoạt động tốt) – vinodh
Cần lưu ý rằng điều này sẽ không hoạt động nếu bạn không có gói Microsoft.jQuery.Unobtrusive.Ajax được cài đặt trong dự án của bạn. Sau khi gói đó được cài đặt - hoàn hảo! – PTD