在MVC中没有所谓的“正确”方法,完全由您决定。
有几种常见的方法可以实现这一点。
您可以通过将它们放置在script
标签中来在视图中“内联”使用JQuery函数,例如:
<script>
$('a').click(function() { alert("Click"); } );
</script>
然而,通常不建议这样做,因为它会使您的JS难以管理和重复使用,还会使HTML变得臃肿。只有在您有一个真正小的脚本片段,并且觉得不值得为其创建新文件时,才会这样做。
另一种选择是将您的HTML放置在单独的JS文件中,并在视图中引用这些文件,例如:
<script src="~/Scripts/mycusomtjquery.js"></script>
这样更好,因为它可以重复使用而且不会使HTML变得臃肿,此外浏览器可以缓存它。
一种更好的选择是利用MVC 4中的捆绑功能并使用此功能。将您的JS放置在单独的文件中,将其注册为一个bundle,并在您的视图中呈现它,例如:
在App_Start\BundleConfig.cs中:
创建您的JS文件并将自定义代码放入其中。
bundles.Add(new ScriptBundle("~/bundles/mycustomjquery")
.Include("~/Scripts/mycustomjquery.js")
.Include("~/Scripts/myothercustomjquery.js"));
在您的视图中添加一个呈现捆绑包的调用
@Scripts.Render("~/bundles/mycustomjquery")
这将以缩小和合并的方式呈现您的js,可以被浏览器缓存。
您可以进行配置以适应不同需求。选择如何捆绑您的JS文件,创建多少实际JS文件,以及在哪里呈现它们等。
我不明白你的问题,但是你知道bundle是什么吗?首先,看一下这篇文章,了解完整的功能:
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification在asp.net mvc中,你不需要使用bundles。你可以从项目中删除它,并将你的javascript文件添加到布局页面中,而无需任何问题。你可以手动添加到布局页面中,并将你的函数添加到另一个js文件中,并包含在视图(或布局)中。Asp.Net MVC与WebForms相比是另一种方法。
Razor是一个视图引擎,你可以使用@
字符编写服务器端代码,例如:@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