W moim projekcie asp.net MVC 4, lubię zabezpieczyć coś z częściowego widoku, czyli wtedy, gdy użytkownik kliknie "więcej szczegółów" . Zapisywanie danych nie stanowi problemu, zamknięcie częściowego widoku nie stanowi problemu, otwórz częściowy widok nie jest problemem, to jest, gdy mój model nie jest prawidłowy (gdy użytkownik zapomni oznaczyć coś) Powoduje to, że mój częściowy widok jest powrócił, ale nie w widoku, gdzie powinien być. Jest to po prostu postrzegana jako samodzielna strona.Gdy model jest nieprawidłowy, powróć do częściowego widoku wewnątrz widoku, z komunikatem o błędzie
Widok:
@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>
}
Kontroler:
[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);
}
link, który wywołuje częściowy widok
@Ajax.ActionLink(item.Evaluator1.Naam, "EvaluatorWijzigenPartial", new { id = item.ID, eval = true }, new AjaxOptions { UpdateTargetId = "EvaluatorWijzigen", OnComplete = "ShowResultDiv"})
Jeśli im przy użyciu tej metody, validator.unobtrusive.parse() został usunięty z częściowym vie w. Wpływa na wybór elementów sterujących rozwijanych. Nawet jeśli ładuję validator.unobtrusive.parse(), nadal nie mogę rozwiązać tego problemu. Każdy pomysł na to. $ ('# someDivThatCOntainsYourForm'). html (result); (==> Jeśli usunę te kontrolki działa poprawnie) – vinodh
Warto zauważyć, że to nie zadziała, jeśli nie masz pakietu Microsoft.jQuery.Unobtrusive.Ajax zainstalowane w twoim projekcie. Po zainstalowaniu tego pakietu - idealnie! – PTD