为什么第二个链接单击重定向到部分不是对话框
why does the second link click redirect to partial not dialog
我有一个编辑部分视图要在对话框中加载,该视图在第一次调用时有效,然后编辑保存数据,很棒。
但是,如果您不刷新页面(我不想这样做),然后再次单击"编辑",您将被重定向到我尝试加载的部分页面。
看起来 AJAX 被忽略了,而是调用了控制器中的 Action 方法。
我通过布局页面中的捆绑包添加了不显眼的内容,主视图使用,部分视图不使用,但我认为它不需要。
我也尝试使用preventDefault
和不同的return false;
方法,但没有成功,如下所示:
editBtn.click(function (e) {
editDialogPlaceholder.load(this.href, function () {
e.preventDefault(); //tried
$(this).dialog('open');
return false; //tried
})
return false;
});
我怎样才能阻止这种情况?
AJAX/JS
$(function () {
var editBtn = $('.editLink');
var editDialogPlaceholder = $('#editDialogUI');
editBtn.button();
// build the dialog form
editDialogPlaceholder.dialog({
autoOpen: false,
modal: true,
resizable: false,
open: function (event, ui) {
$(this).load('@Url.Action("Edit","Announcements")');
},
buttons: {
"Save": function () {
saveAnnouncement();
fetchList();
$(this).dialog("close");
},
"Close": function () {
$(this).dialog("close");
}
}
});
// on click load the dialog form, return false to stop redirect
editBtn.click(function () {
editDialogPlaceholder.load(this.href, function () {
$(this).dialog('open');
})
return false;
});
});
//post data back to the controller to save to the db
function saveAnnouncement() {
$.ajax({
url: '@Url.Action("Edit","Announcements")',
type: 'POST',
data: $('form').serialize()
})
}
function fetchList() {
var aList = $('#announcementList');
aList.load('@Url.Action("Fetch")');
}
编辑操作方法
[HttpGet]
public ActionResult Edit(int id)
{
var announcementModel = (from a in db.DbAnnouncement
where a.Id == id
select a).SingleOrDefault();
return PartialView("Edit", announcementModel);
}
用于打开对话框的 Html.ActionLinks - 第二次单击它时将重定向到控制器中指定的部分。
<div class="announcementTableCell">
@Html.ActionLink("Edit", "Edit", new { id = Model[i].Id }, new { @class = "editLink" })
@Html.ActionLink("Delete", "Delete", new { Model[i].Id }, new { @class = "dltLink" })
</div>
注释中提出的解决方案是使用jQuery.fn.on
作为单击按钮,因为当时页面未刷新,因此绑定到未刷新的静态元素意味着正在调用操作方法,因此重定向到部分视图。
因此,工作按钮单击代码:
$('#announcementList').on("click", ".editLink", function () {
editDialogPlaceholder.load(this.href, function () {
$(this).dialog('open');
})
return false;
});
相关文章:
- javascript sdk正在打开多个登录对话框
- KnockoutJS-根据第一个组合框中选择的值填充第二个组合框
- jquery对话框内容仅针对第一个请求进行对齐
- 如何使用 JavaScript 从单元格中选择第二个输入框
- JQuery UI 对话框在第二次单击时不会更新
- 如果用户由于第二个处理程序中的对话框而停留在页面上,则跳过加载前处理程序
- 当我打开模式对话框时,可以看到2个滚动条
- 使用JQuery,我们如何使用一个函数来显示多个按钮的点击事件对话框
- 如何在网页加载asp.net上显示文本框中第二个字母的光标位置
- Safari限制?使用多种方法来显示多个自定义模式对话框
- "阻止该页面创建附加对话框“;第二次点击
- 作用域中的publish_actions未触发第二个对话框
- Jquery ui对话框正在打开多个对话框,而不是一个对话框
- 使用Web服务根据对另一个下拉框的选择填充第二个下拉框以获取信息
- 单个输入框的2个值,并将第二个值存储在php中
- 如何将 jquery ui 小部件包含在第二个堆叠模式对话框中
- jQuery UI 对话框 - 第二次显示未选择的文本
- 为什么第二个链接单击重定向到部分不是对话框
- 基于第一个 - JQuery 对话框加载第二个下拉列表
- Jquery对话框多个打开