首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MVC中从DataTables视图中加载不同的DataTables库

在MVC中从DataTables视图中加载不同的DataTables库
EN

Stack Overflow用户
提问于 2016-08-08 13:59:32
回答 2查看 320关注 0票数 1

我需要在视图中加载特定的jQuery库版本,在这里我将使用DataTables库。

问题是,我在all项目中使用了jQuery 3.1,并且在_Layout视图中包含了引用,但是DataTables只允许:

代码语言:javascript
运行
复制
Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3

如果可能的话,我如何在特定视图中加载不同版本的jQuery?

编辑:

关于DavidG评论,消息似乎是基于不支持jQuery v3的Bootstrap jQuery支持的库。

为了避免这个问题(“添加了对jQuery 3的支持”)和使用jQuery 3.1.0,我将更新到Bootstra3.3.7,但是DataTables问题仍然存在。

EDIT2 (解决方案):

我决定遵循Shyju的建议,让一切保持简单,并且基于一个稳定的jQuery版本,因此我将jQuery降级为2.2.4 (最后一个v2稳定版本),并将Bootstrap保持在最后一个版本(v3.3.7)。

DataTables版本保持不变(1.10.12)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-08 14:07:12

如果您绝对需要为特定页面加载不同版本的库,您可以这样做。

在返回具有数据表的视图的特定操作方法中,设置一个ViewBag

代码语言:javascript
运行
复制
public ActionResult List()
{
    ViewBag.NeedsSpecialJQuery = true;
    return View();
}

在布局(_Layout.cshtml)中,检查这个view袋项,并根据它的存在/值,有条件地加载所需的jQuery版本。

代码语言:javascript
运行
复制
@{
    if (ViewBag.NeedsSpecialJQuery != null && ViewBag.NeedsSpecialJQuery )
    {
        <script src="path to jQuery 1.9.1 here"></script>
    }
    else
    {
        <script src="path to other jQuery here"></script>
    }
}

虽然这可能解决当前的问题,但我强烈建议您考虑更新jQuery版本(以及依赖于jQuery的其他库),以便只需要一个版本。可能有点工作。但这是值得的。你不需要寻找像这样的解决方案

另一个选项是为特定视图使用单独的布局文件。

票数 2
EN

Stack Overflow用户

发布于 2016-08-08 14:06:51

使用jQuery.noConflict()实现这一点是可能的。

  • 加载旧的jQuery库。
  • 将其全局引用更改为$以外的其他内容。例如jQuery2
  • 加载新的jQuery库

您可以继续对新库使用$处理程序,并且只要您想使用旧库,就可以调用您指定的名称,例如jQuery2

代码语言:javascript
运行
复制
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.js"></script>
<script type="text/javascript">
    var jQuery2 = $.noConflict(true);
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

如果您只想在特定页面中安装旧的jQuery库,您可以将这个答案与夏珠氏液组合起来,您可以在它们的ViewBag中设置一个布尔值,并像这样使用它。

代码语言:javascript
运行
复制
@{
    if (ViewBag.NeedsSpecialJQuery != null && ViewBag.NeedsSpecialJQuery)
    {
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
        <script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.js"></script>
        <script type="text/javascript">
            var jQuery2 = $.noConflict(true);
        </script>
    }

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
}

然后你可以调用DataTable

代码语言:javascript
运行
复制
jQuery2("#datatable").DataTable();

工作jsFiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38831209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档