我正在使用ASP.Net 4和MVC的网站上工作。我非常熟悉WebForms& javascript,并使用了jquery,但捆绑令我困惑。据我所知,所有的javascript文件都包含在BundleConfig.cs中,并通过site.master文件中的标题下载。所以,我应该能够将我的附加函数和jquery调用放在新标签中。
但显而易见的是,jquery函数应该进入文件的方式与我以前完全不同,而且根本无法获得任何操作。
是否有任何简短的教程可以告诉我在MVC中执行此操作的正确方法?而不是Razor,我不需要两条学习曲线。
答案 0 :(得分:11)
在MVC中没有“正确”的方法,完全取决于你。
有几种常见的方法可以做到这一点。
您可以将JQuery函数置于script
标记中,从而将其置于视图中
e.g。
<script>
$('a').click(function() { alert("Click"); } );
</script>
但是,通常不建议这样做,因为它会使您的JS难以管理和重用,并使您的HTML变得臃肿。如果你有一个真正的小块脚本,你可能只会这样做,并且不觉得值得创建一个新文件。
或者,您可以将html放在单独的js文件中,并在您的视图中包含对这些内容的引用,例如
<script src="~/Scripts/mycusomtjquery.js"></script>
这样做更好,因为它允许重复使用并且不会使HTML膨胀,而且浏览器能够缓存它。
更好的选择是利用MVC 4中的Bundling功能并使用它。将您的js放在一个单独的文件中,将其注册为一个包,并在您的视图中呈现它
e.g。
在单独的文件中创建js并将自定义代码放在那里。
将其放在App_Start \ BundleConfig.cs
中bundles.Add(new ScriptBundle("~/bundles/mycustomjquery")
.Include("~/Scripts/mycustomjquery.js")
.Include("~/Scripts/myothercustomjquery.js"));
添加一个调用以在视图中呈现包
@Scripts.Render("~/bundles/mycustomjquery")
这将以一种可以由broswer缓存的minfied和merged方式呈现你的js。
您可以将其配置为适合。选择如何捆绑你的js文件,要制作多少个实际的js文件,在哪里渲染它们等等。
答案 1 :(得分:1)
我不明白你的问题,但你知道什么是捆绑包吗?首先,看看这个artciel,了解完整的功能: http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
您不需要在asp.net mvc中使用Bundles。您可以将其从项目中删除,并在布局页面中添加您的javascripts文件而不会出现任何问题。您可以手动添加到布局页面,并将您的功能添加到另一个js文件中,并包括在视图(或布局)上。与WebForms相比,Asp.Net MVC是另一个应用程序。
Razor是一个Viewengine,您可以使用@
字符编写服务器端代码,对于我们自asp.net mvc 3以来的示例:@Html.TextBox("Name")
,但您也可以编写ASPX引擎,对于样本:<%: Html.TextBox("Name") %>
,就像在WebForms中做一些事情一样。 (我推荐使用Razor,因为它的编写,阅读和使用速度更快。)
在此处了解有关ViewEngines的更多信息: http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx