【发布时间】:2023-03-27 06:25:01
【问题描述】:
我在一个 C# Razor 网站上工作,我正在从一个 boostrap 模式发布,然后返回一个新的视图和模型。要使用响应重新加载整个页面,我在此代码块中使用以下行。
$("html").html(响应);
function addDevice(e) {
e.preventDefault();
var ID = $("#txtNewDeviceID").val();
var Name = $("#txtNewDeviceName").val();
$.post('@Url.Action("AddDevice", "Devices")', { 'DeviceID': ID, 'DeviceName': Name }, function (response) {
$('#newDeviceModal').modal('hide');
$("html").html(response);
AttachBindings();
});
}
这是 AttachBindings() 背后的代码:
function AttachBindings() {
$(document).on('click', 'table tr', {}, tableClick);
$(document).on('keyup', '#search', {}, search);
$(document).on('click', '#btnAdd', {}, function (e) {
addDevice(e);
});
$(document).on('click', '#btnRemove', {}, function (e) {
removeDevice(e);
});
$(document).on('click', '#btnUpdate', {}, function (e) {
updateDevice(e);
});
}
不幸的是 AttachBindings() 从未被命中,我似乎无法找到重新附加这些事件的方法。唯一似乎有效的事件是附加到#search 的keyup。有关如何解决此问题的任何想法?
【问题讨论】:
-
不需要调用
AttachBindings(假设您在页面第一次加载时调用了它)-您已经在使用事件委托。但是,用响应重新加载整个页面是什么意思?如果您尝试重新加载页面,那么使用 ajax 将毫无意义 -
我需要刷新整个页面,因为我需要返回一个新的视图和模型。通常在 C# razor 中使用 @url.action(),但由于这是从模式中发生的,因此我必须使用 $.Post() 来执行操作。
-
对不起,你没有任何意义。如果您想完全刷新页面(您在 POST 方法中进行正常提交和重定向),则不要使用 ajax。而您刚刚替换了当前页面,并在此过程中删除了您的
AttachBindings函数,使其不再存在 - 所以它当然不会执行。
标签: javascript c# jquery asp.net-mvc razor