- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过 Visual Studio 2012 创建了一个新的 ASP.NET Web 窗体项目。不幸的是,默认的 Site.Master 文件非常困惑。 (我将这些问题放在一起,因为它们非常相关并且引用了很多相同的代码。)
首先,我已经了解捆绑和缩小的目的,因此无需讨论。但是,我不了解脚本包含在默认母版页中的方式是怎样的。
问题 1:
为什么在 BundleConfig.cs 文件中创建了一个名为“~/bundles/WebFormsJs”的包,但在母版页中,每个相同的单独 .js 文件却在 ScriptManager 中一一列出?
BundleConfig.cs 内部:
bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include(
"~/Scripts/WebForms/WebForms.js",
"~/Scripts/WebForms/WebUIValidation.js",
"~/Scripts/WebForms/MenuStandards.js",
"~/Scripts/WebForms/Focus.js",
"~/Scripts/WebForms/GridView.js",
"~/Scripts/WebForms/DetailsView.js",
"~/Scripts/WebForms/TreeView.js",
"~/Scripts/WebForms/WebParts.js"));
Site.Master 内部:
<body>
<form runat="server">
<asp:ScriptManager runat="server">
<Scripts>
<%--Framework Scripts--%>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="jquery.ui.combined" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
<asp:ScriptReference Name="WebFormsBundle" />
<%--Site Scripts--%>
</Scripts>
</asp:ScriptManager>
如您所见......每个相同的 .js 文件都单独列在 ScriptManager 中。我什至没有看到对在 BundleConfig.cs 之外的任何地方创建的“WebFormsJs”包的引用。如果这些 javascript 文件中的每一个都将在 ScriptManager 中单独引用,为什么还要创建该包?
问题2:
为什么要以这种方式使用 ScriptManager?我的印象是 ScriptManager 是 Microsoft 版本的 Ajax 所必需的,例如使用 UpdatePanels。这里使用 ScriptManager 的目的是什么...只是为了简单地注册 javascript 文件?
问题3:
通过 ScriptManager 注册 javascript 文件与在 Site.Master 顶部使用以下方法注册 javascript 文件有什么区别?
<%: Scripts.Render("~/bundles/modernizr") %>
问题 4:
在 ScriptManager 内部我还注意到了这些:
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="jquery.ui.combined" />
...我至少可以从BundleConfig.cs中识别出“MsAjaxBundle”,但是jquery和jquery.ui.combined在哪里定义的?我进行了搜索并在packages.config 中找到了对它们的引用。
<package id="jQuery" version="1.7.1.1" targetFramework="net45" />
<package id="jQuery.UI.Combined" version="1.8.20.1" targetFramework="net45" />
但我也不明白这里发生了什么。我以为packages.config是用于NuGet的。另外...我什至没有看到此处列出的这些 jQuery .js 文件的位置路径。它们只是列在这里,并且与 .NET Framework 的特定版本(在我的例子中为 4.5)有着奇怪的关联。我无法理解为什么 javascript 资源会与 .NET Framework 的某个版本相关联。
无论如何,问题4是这样的:ScriptManager中的资源“jquery”是如何被添加/使用的?为什么我没有看到 jQuery .js 文件像所有其他 bundle 一样在 BundleConfig.cs 中捆绑在一起?
问题 5:
如果我不打算使用 UpdatePanel 和此类 Microsoft Ajax 控件,我可以从 Site.Master 中删除以下脚本引用吗?我有点困惑为什么默认情况下会将其包含在这里。
<asp:ScriptReference Name="MsAjaxBundle" />
最佳答案
更新:这是一篇新的博客文章,其中也详细讨论了这一点:ASP.NET article
基本上,网络表单+捆绑看起来像这样,因为我们无法在脚本管理器中更改一堆遗留行为。
关于您的具体问题:
基本上,重复数据删除工作正常,脚本管理器对原始脚本资源有限制,导致它们无法进行脚本映射,因此需要将它们映射到磁盘,然后正确删除重复数据,因为文件已经包含在内在捆绑中。WebformsBundleJs 是在 ScriptManager nupkgs 内的 PreAppStart 代码内部创建的脚本映射。 (我同意这几乎是不可能发现的)
新的 4.5 功能(例如不引人注目的验证)需要 jquery(通过 scriptmanager),这就是为什么使用脚本管理器来确保 jquery 不会被渲染两次。
这可以正常工作,但它永远不会使用 ScriptManager 进行重复数据删除。所以对于 Modernizr 来说这不会是一个问题。
jquery 包将 jquery 文件拖放到磁盘上的 Scripts 文件夹中。
该引用提取了包含所有 ajax 脚本的 msajaxbundle,如果您不需要/不想要它们,我认为删除它是安全的。
关于asp.net - VS2012 - Web 表单 - 捆绑困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290537/
我有一个要提交的 iOS 应用程序,我的应用程序在我的 iPhone 上运行。我将 apple id 帐户添加到 Xcode 并在 Xcode 的常规部分下输入我的 bundle id,然后单击“修复
我有一个SDK项目,它在gradle中引用了很多依赖项。我必须要求SDK用户在项目中使用SDK时添加这些依赖项。问题是,每当我添加一些新的依赖项或将当前的依赖项替换为新的依赖项时,我都必须要求用户进行
我使用 Microsoft.AspNet.Web.Optimization用于 css 和 js 捆绑和缩小的 nuget 包。 我在这个路径 ~/bundles/shared.css 中创建了一个包
我使用 laravel-mix(包括 webpack)来打包 JS 文件。使用 BundleAnalyzerPlugin,我发现我的输出文件包含多个 JQuery 库副本,这增加了输出文件的大小。 它
我正在使用 maven felix 插件来创建 OSGi 包,但是假设您有一个包“com.example”存在于project1和project2中。此外,project2 依赖于 project1。
当我尝试捆绑我的 Meteor 应用程序时,我得到: $ meteor bundle app.tgz Errors prevented bundling: Exception while bundli
因此查看 bundleconfig.cs 它应该允许基于设备类型进行捆绑。唯一的问题是因为它在 App_Start 中,所以不允许我访问 Request 对象。有什么想法可以实现基于设备的捆绑吗? 最
上下文 http://news.ycombinator.com/item?id=4125530 问题: 这是否最终意味着 Java 应用程序将能够发布到 Mac 商店? (因为 JRE 自动捆绑到应用
我正在尝试为一个 React/Redux 项目创建我自己的 Webpack 配置。配置看起来很好,但是包的大小很大(在开发模式下,我知道如何在生产模式下减少它) 我的 package.json 看起来
所以我一直收到这个 Bundle ID 错误,说它不可用而且我真的不知道如何修复它。这是错误: 提供的数据有误。请更正并重新提交。标识符为“com.team.AppName”的 App ID 不可用。
我正在浏览 SO 并找到了 some code这向我提出了一个问题。 struct node* BuildOneTwoThree() { struct node *list = malloc(3 *
我正在为 Delphi XE7 使用 intraweb XIV 捆绑版。当我在这个新的捆绑版本中测试一个 intraweb XII 应用程序时,SSL/TLS 不工作。捆绑版本不支持 SSL/TLS?
预期: 当我使用 webpack 构建时,我的所有 JS 文件都会被捆绑,除了 ./src/Portfolio 目录中的文件(根据我的 Webpack.config.js 设置)。 实际: Webpa
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我有一个项目引用了许多开源库,有些是新的,有些不是很新。也就是说,它们都很稳定,我希望坚持使用我选择的版本,直到我有时间迁移到更新的版本(我昨天测试了 hsqldb 2.0,它包含许多 api 更改)
我正在创建一个 REST API,并且我一直在研究允许捆绑来自客户端的请求的想法。我所说的捆绑是指他们可以发送一个包含多个“真实”请求的请求,然后将它们一起交付给客户。通常是 javascript a
在我的 AngularJS 项目中,我有一个 HTML 模板,其中 innerText 位于新行中: Click here 我正在使用 webpack 作为我的捆绑器。我希望它 trim
我已经为我的应用程序创建了一个静态库。现在,我的应用程序使用我在应用程序中引用的 plists 和图像等来源。 如何捆绑这些图像并将它们与静态库一起交付,以及我需要在源加载代码中进行哪些更改才能从该
所以, 我是 webpack 的新手,我正在开发一个项目,在该项目中我们只加载一个文件 bundle.js,我知道我可以单独加载文件。 但我想要的是bundle.js中未缩小的文件。目前我正在获取缩小
如何使用用户区域设置登录路径?我试过了 check_path: /{_locale}/login_check 和 check_path: /(en|ru)/login_check 但什么也没有
我是一名优秀的程序员,十分优秀!