You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在父视图中基于_partialA的Name值加载_partialB?附XRegExp报错

解决"Uncaught Error: can't load XRegExp twice in the same frame"问题

看起来你在点击Name按钮加载分部视图_partialB时遇到了XRegExp重复加载的报错,这个问题大概率是同一页面中多次引入了XRegExp脚本导致的——比如主页面已经加载过一次,_partialA或_partialB里又重复引用了,或者每次AJAX加载分部视图时都重新注入了这个脚本。结合你的场景,我给你几个具体的解决思路:

1. 统一脚本引用到主布局

最稳妥的方式是把XRegExp的脚本引用只放在你的主布局文件(比如_Layout.cshtml)里,确保整个页面生命周期内只加载一次。然后在_partialA和_partialB中移除所有XRegExp的脚本引用,这样不管你加载多少次分部视图,都不会触发重复加载的报错了。

2. 在分部视图中添加加载判断

如果因为业务需求必须在分部视图里引用XRegExp,可以在脚本加载前加一个判断,只有当XRegExp还未初始化时才引入:

<script>
// 检查XRegExp是否已存在,不存在才加载
if (typeof XRegExp === 'undefined') {
    const script = document.createElement('script');
    script.src = '/Scripts/xregexp.min.js'; // 替换成你的XRegExp实际路径
    document.head.appendChild(script);
}
</script>

这种方式既保证了分部视图单独使用时的依赖完整性,又避免了重复加载的问题。

3. 优化AJAX加载分部视图的逻辑

如果你是用jQuery的load()方法加载分部视图,默认会执行返回内容里的所有脚本。可以修改加载逻辑,只提取并插入HTML内容,过滤掉重复的脚本:

// 替换你原来的点击事件逻辑
$('.name-button').click(function() {
    const selectedName = $(this).text();
    $.get('/YourController/ABC?name=' + selectedName, function(response) {
        // 只提取分部视图的HTML内容(根据你的视图根元素调整选择器)
        const $content = $(response).find('.partial-content');
        $('#partialB-container').html($content);
    });
});

另外看了你的Controller代码,逻辑上是没问题的——不管name参数是否为空,都会返回包含firsts和seconds的ClsA模型,确保分部视图能拿到正确的数据。重点还是解决前端脚本重复加载的问题。

内容的提问来源于stack exchange,提问作者User9895

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:12:30