通过 MVC 局部视图注入时,Bootstrap 模态显示和隐藏事件未触发

Posted

技术标签:

【中文标题】通过 MVC 局部视图注入时,Bootstrap 模态显示和隐藏事件未触发【英文标题】:Bootstrap modal shown and hidden events not firing when injected via MVC partial view 【发布时间】:2017-01-11 21:36:42 【问题描述】:

在 ASP.NET MVC 5 中,我有一个 id #modal 的引导模式,当满足某些条件时(为简洁起见省略了条件),它会作为 view 的一部分加载。我在 js 文件中实现了 #modalshown.bs.modalhidden.bs.modal 函数:main.js

到目前为止一切顺利,一切正常。但是,在上述条件不满足的场景中,模态框通过 AJAX 调用注入到视图的 html 中,作为 部分视图 的一部分。模态与前面提到的完全一样(相同的#modal id,相同的一切)。但是,这一次 main.js 中的 shown.bs.modalhidden.bs.modal 函数没有触发。这是为什么呢?

【问题讨论】:

你需要event delegation 【参考方案1】:

更改main.js 中的事件处理程序:

$('#modal').on('shown.bs.modal', function (e)  ... );
$('#modal').on('hidden.bs.modal', function (e)  ... );

到委托的事件处理程序:

$('body').on('shown.bs.modal', '#modal', function (e)  ... );
$('body').on('hidden.bs.modal', '#modal', function (e)  ... );

您可以将body 替换为包含#modal 的任何父容器。有关详细说明,请参阅@Stephen Muecke's comment 中的链接。

【讨论】:

以上是关于通过 MVC 局部视图注入时,Bootstrap 模态显示和隐藏事件未触发的主要内容,如果未能解决你的问题,请参考以下文章

使用 MVC5 C# 和 Razor 在局部视图中运行 javascript

AngularJS 不适用于 MVC 局部视图

ASP.NET MVC 通用局部视图模式

MVC 4 模态窗口,局部视图和验证

是否可以在 MVC 局部视图中运行 AngularJS 应用程序

在 asp.net mvc 中实现时,Twitter Bootstrap 模式无法正常工作