J'ai 2 boutons (Enregistrer et Aperçu) dans ma vue partielle. Cette vue partielle fait le poste Ajax et les deux boutons font leur travail bien où Aperçu permet juste de prévisualiser le widget pendant que Enregistrer enregistre les données dans la base de données. Ici j'ai 2 problèmesComment trouver quel bouton est cliqué à partir d'une vue partielle à l'appel onSuccess Ajax
- Je suis incapable de trouver quel bouton est cliqué (Ajax.BeginForm onSuccess).
- Mon contrôleur n'est pas redirigé vers le lien d'action
publique ActionResult EditWidget (WidgetViewModel viewmodel, chaîne onSave, chaîne onPreview)
{
if(!string.IsNullOrEmpty(onPreview))
{
viewmodel.ButtonName = "Preview";
var parameters = "";
if (!string.IsNullOrEmpty(viewmodel.OverriedParameters))
parameters = viewmodel.OverriedParameters;
else
parameters = viewmodel.DefaultParameters;
return PartialView("Widgets/_Preview", previewViewModel);
}
else if(!string.IsNullOrEmpty(onSave))
{
viewmodel.ButtonName = "Save";
if(ModelState.IsValid)
{
//RedirectToAction("GetPage", "Home", new { Page = pageId
return Json(Url.Action("GetPage", new {Page = pageId}));
}
}
return null;
}
mon point de vue partielle est la suivante
@using (Ajax.BeginForm("EditWidget", "Home", new AjaxOptions { UpdateTargetId = "divPreview", HttpMethod = "POST", OnBegin = "application.getpage.onBeginPreview", OnSuccess = "application.getpage.onSuccessPreview" }))
{
<div class="form-inline">
@Html.LabelFor(x => x.OverriedParameters, "Is Widget Active ?", new { @class = "col-sm-2" })
@Html.TextBoxFor(x => x.OverriedParameters, new { @class = "col-sm-1" })
</div>
<div class="form-inline">
@Html.LabelFor(x => x.DefaultParameters, "Is Widget Active ?", new { @class = "col-sm-2" })
@Html.TextBoxFor(x => x.DefaultParameters, new { @class = "col-sm-1" })
</div>
<div class="form-inline">
<input id="btnSave" name="onSave" type="submit" class="btn btn-primary" style="width:65px" value="Save" />
<input id="btnPreview" name="onPreview" type="submit" class="btn btn-primary" style="width:65px" value="Preview" />
</div>
}
<div id="divPreview" style="margin-top:5px">
</div>
et mon onSuccess est un s suivre
onSuccessPreview: function (data, textStatus, jqXHR) {
// Here i want to find which button is clicked from my partial view.
// On Save button click i want to redirect to the action method in the same controller while on Preview button i don't want to do anything
}
Je pense Le bouton d'aperçu ne doit pas afficher le formulaire. Changez son type en 'button' au lieu de' submit'. – Mairaj
avec le bouton de type, je suis incapable d'appeler la méthode d'action qui est responsable du rendu de la vue partielle d'aperçu. –