Nel mio progetto asp.net MVC 4, mi piace proteggere qualcosa da una vista parziale, ovvero quando un utente fa clic per "ulteriori dettagli" . Salvare i dati non è un problema, chiudere la vista parziale non è un problema, aprire la vista parziale non è un problema, è quando il mio modello non è valido (quando un utente dimentica di segnare qualcosa) Il risultato è che la mia vista parziale è restituito, ma non all'interno della vista dove dovrebbe essere. È appena visto come una pagina autonoma.Quando il modello non è valido, tornare alla vista parziale all'interno di una vista, con messaggio di errore
Vista:
@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>
}
Controller:
[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);
}
Il legame che chiama la vista parziale
@Ajax.ActionLink(item.Evaluator1.Naam, "EvaluatorWijzigenPartial", new { id = item.ID, eval = true }, new AjaxOptions { UpdateTargetId = "EvaluatorWijzigen", OnComplete = "ShowResultDiv"})
Se im utilizzando questo metodo, il validator.unobtrusive.parse() ottenuto rimosso vie parziale w. Influisce sui controlli a discesa selezionare. Anche se sto caricando il validator.unobtrusive.parse(), ancora non posso risolvere questo problema. Qualche idea per questo. $ ('# someDivThatCOntainsYourForm'). html (risultato); (==> Se rimuovo questo controllo funzionante) – vinodh
Vale la pena notare che questo non funzionerà se non si dispone del pacchetto Microsoft.jQuery.Unobtrusive.Ajax installato nel tuo progetto. Una volta installato il pacchetto, perfetto! – PTD