如何从onSuccess Ajax调用
问题描述:
的局部视图中查找单击哪个按钮我在局部视图中有2个按钮(保存和预览)。这部分视图正在执行Ajax帖子,并且两个按钮的工作都很好,其中Preview仅允许预览小部件,而Save则将数据保存到数据库中。这里我有2个问题如何从onSuccess Ajax调用
- 我无法找到哪个按钮被点击(从Ajax.BeginForm onSuccess)。
- 我的控制器不重定向到操作链接
公众的ActionResult EditWidget(WidgetViewModel视图模型,字符串的onSave,串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;
}
我的部分观点如下
@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>
and my onSuccess is a S请按照
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
}
答
你可以添加一个隐藏输入:在你的onSucces使用的onclick Javascript方法
<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" />
<input type="hidden" id="what-was-clicked" />
</div>
更新它的值(前提交),并阅读:
onSuccessPreview: function (data, textStatus, jqXHR) {
var clickedButton = $("#what-was-clicked").val();
}
+0
非常感谢你vhr。这正是我期待的。 –
+0
欢迎您:) – vhr
我想预览按钮不应该发布表单。将其类型更改为'button'而不是'submit'。 – Mairaj
带有类型按钮,我无法调用负责呈现预览部分视图的操作方法。 –