如何在asp.net mvc 4中使用jquery?

时间:2013-04-02 03:12:52

标签: jquery asp.net-mvc

我正在使用ASP.Net 4和MVC的网站上工作。我非常熟悉WebForms& javascript,并使用了jquery,但捆绑令我困惑。据我所知,所有的javascript文件都包含在BundleConfig.cs中,并通过site.master文件中的标题下载。所以,我应该能够将我的附加函数和jquery调用放在新标签中。

但显而易见的是,jquery函数应该进入文件的方式与我以前完​​全不同,而且根本无法获得任何操作。

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

2 个答案:

答案 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中使用B​​undles。您可以将其从项目中删除,并在布局页面中添加您的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