Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 为什么我必须修改@Script.Render才能在HTML文档中包含脚本_Asp.net Mvc_Jquery Ui - Fatal编程技术网

Asp.net mvc 为什么我必须修改@Script.Render才能在HTML文档中包含脚本

Asp.net mvc 为什么我必须修改@Script.Render才能在HTML文档中包含脚本,asp.net-mvc,jquery-ui,Asp.net Mvc,Jquery Ui,在我意识到为了让jquery ui在ASP.NET MVC中工作,我需要添加@Scripts.Render(“~/bundles/jqueryui”)之前,这对我来说是一场噩梦。在执行此操作之前,我一直得到未捕获错误:未定义不是函数。我不明白的是,在检查html源代码时,当我在源代码中看到jQueryUI文件时,为什么会发生这种情况。这是_Layout.cshtml文件: <!DOCTYPE html> <html> <head> <sc

在我意识到为了让jquery ui在ASP.NET MVC中工作,我需要添加
@Scripts.Render(“~/bundles/jqueryui”)
之前,这对我来说是一场噩梦。在执行此操作之前,我一直得到
未捕获错误:未定义不是函数
。我不明白的是,在检查html源代码时,当我在源代码中看到jQueryUI文件时,为什么会发生这种情况。这是_Layout.cshtml文件:

    <!DOCTYPE html>
<html>
<head>
    <script src="~/Scripts/jquery-1.8.2.js"></script>
    <script src="~/Scripts/jquery-ui-1.8.24.min.js"></script>
    <link href="~/Content/themes/base/jquery-ui.css" rel="stylesheet" />
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    <script src="~/Scripts/jquery.plugins.js"></script>
    <script src="~/Scripts/Helpers.js"></script>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryui")//Added later to get it working
    @RenderSection("scripts", required: false)
</body>
</html>
如果我在_Layout.cshtml中省略了
@Scripts.Render(“~/bundles/jqueryui”)
,我将得到上述错误。这段代码与任何普通html或web表单都能完美地配合使用。因此,文档似乎无法看到jQueryUI文件的内容。让我的问题具体化:

  • 当我查看网页的源代码时,我可以看到jquery-ui-1.8.24.js,它在html源代码中被引用。那么为什么代码找不到jquery ui函数呢
  • 如果必须在
    @Scripts.Render
    中指定每个java脚本文件,那么为什么我的Helper.js文件没有任何问题
  • 最后,这个
    ~/bundles/jqueryui
    路径指的是哪里
    jquery ui依赖于jquery(即必须在jquery之后定义),但您已经复制了文件。在标题中,您包含了
    ,后面是
    jqueryui
    。然后使用
    @Scripts.Render(“~/bundles/jquery”)
    (现在在jqueryui之后)在文件末尾重新加载jquery

    删除头部的脚本,它应该可以工作。此外,我建议您从头部删除jquery.validate和jquery.validate.unobtrusive,并在文件末尾使用
    @Scripts.Render(“~/bundles/jqueryval”)
    (在
    @RenderSection..
    之前)。您可以在App\u Start\BundleConfig.cs文件中检查这些捆绑包。使用捆绑包有许多优点(请参阅)


    如果您在基于_布局的每个页面中使用所有这些文件,您可以定义自己的包以包含所有文件。

    您需要定义js的策略。我建议你先组织你的js,然后把它分成更小的部分。一个脚本应该是所有页面的通用脚本(在您的例子中是jQuery),其他用于验证的脚本应该只包含在具有一些编辑文件等的页面上


    使用DRY原理,阅读一些关于js如何工作的信息。它在不久前帮了我很多忙,不会花很多时间。

    关于第三个问题,请参阅
    App\u Start\BundleConfig.cs
    Ans 2每个js文件都不需要指定给
    @Scripts.Render
    @ArijitMukherjee,那么为什么jquery ui文件会被删除呢?答案1:它不应该像你提到的那样显示在源代码中,也不应该从头部删除query.validate和jquery.validate.unobtrusive并使用脚本。Render确实起作用。(我的意思是它仍然可以工作)但是从头部删除jquery和jqueryui并使用脚本。jQuery未定义为2。“未定义”不是一个函数。我已重新创建了您的布局。在jquery和jqueryui的头部和
    @Scripts.Render(“~/bundles/jquery”)
    的结尾,我得到了错误。如果我删除
    。(“~/bundles/jquery”)
    它可以正常工作。但是推荐的方法是从头部删除脚本,然后使用
    @scripts.Render(“~/bundles/jquery”)
    ,然后在末尾使用
    @scripts.Render(“~/bundles/jqueryui”)
    。但是为什么在我的例子中不起作用呢。再次重复:我从head中删除了jquery和jqueryui,并使用了脚本。为它们进行渲染。我不知道
    ~/scripts/jquery.plugins.js
    ~/scripts/Helpers.js
    中有什么内容,但如果在jquery和jquery ui之前加载,它们可能会导致问题。试着把它放在最后,看看这是否解决了错误。哈哈,我会告诉你为什么,因为我把jquery和jqueryui移到了body中,我在一个文件中使用了jqeury,我在头部引用了这个引用文件,引用文件在被引用文件之前。这就是问题的根源。非常感谢。现在一切都安排好了。
        $('.txt-date').datepicker({
        showAnim: "drop",
        changeMonth: true,
        changeYear: true,
        dateFormat: "dd.mm.yy"
    });