7

我正在使用带有 MVC 的 ASP.Net 4 的站点上工作。我非常熟悉 WebForms 和 javascript,并且使用过 jquery,但捆绑让我感到困惑。据我所知,所有 javascript 文件都包含在 BundleConfig.cs 中,并与 site.master 文件中的标头一起下载。所以,我应该能够将我的附加函数和 jquery 调用放在新标签中。

但是很明显,jquery 函数应该进入文件的方式与我习惯的完全不同,我根本无法操作任何东西。

是否有任何简短的教程可以向我展示在 MVC 中执行此操作的正确方法?而不是 Razor,我在这里不需要两条学习曲线。

4

2 回答 2

11

在 MVC 中没有“正确”的方法可以做到这一点,这完全取决于你。

有几种常见的方法可以做到这一点。

您可以将 JQuery 函数“内联”放置在您的视图中,方法是将它们放在script标签中,例如

<script>
    $('a').click(function() { alert("Click"); } );
</script>

但是,通常不建议这样做,因为它会使您的 JS 更难管理和重用,并使您的 HTML 膨胀。如果您有一个真正的一小段脚本,并且觉得不值得为其创建一个新文件,您可能只会这样做。

或者,您可以将您的 html 放在单独的 js 文件中,并在您的视图中包含对这些文件的引用,例如

<script src="~/Scripts/mycusomtjquery.js"></script>

这更好,因为它确实允许重复使用并且不会使您的 HTML 膨胀,而且浏览器能够缓存它。

一个更好的选择是利用 MVC 4 中的捆绑功能并使用它。将你的 js 放在一个单独的文件中,将它注册为一个包,然后在你的视图中呈现它

例如

在单独的文件中创建你的 js 并将你的自定义代码放在那里。

把它放在 App_Start\BundleConfig.cs

bundles.Add(new ScriptBundle("~/bundles/mycustomjquery")
                    .Include("~/Scripts/mycustomjquery.js")
                    .Include("~/Scripts/myothercustomjquery.js"));

添加调用以在您的视图中呈现捆绑包

@Scripts.Render("~/bundles/mycustomjquery")

这将以一种可以被浏览器缓存的压缩和合并方式呈现您的 js。

您可以对其进行配置以适合。选择如何捆绑你的 js 文件、制作多少个实际的 js 文件、在哪里渲染它们等等。

于 2013-04-02T05:05:18.490 回答
1

我不明白你的问题,但你知道捆绑是什么吗?首先,看一下这篇文章以了解完整的功能: http ://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

您不需要在 asp.net mvc 中使用 Bundles。您可以将其从项目中删除并在布局页面中添加您的 javascripts 文件,而不会出现问题。您可以手动添加到布局页面,并将您的功能添加到另一个 js 文件中,并包含在视图(或布局)中。与 WebForms 相比,Asp.Net MVC 是另一种方法。

@Razor 是一个 Viewengine,您可以使用char编写服务器端代码,例如:@Html.TextBox("Name")我们从 asp.net mvc 3 开始就有,但您也可以编写 ASPX 引擎,例如:<%: Html.TextBox("Name") %>在 WebForms 中执行某些操作。(我推荐 Razor,因为它的编写、阅读和使用速度更快)。

在此处了解有关 ViewEngines 的更多信息: http ://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx

于 2013-04-02T03:22:05.470 回答