如何在asp.net mvc中使jquery工作

时间:2011-07-26 15:16:54

标签: jquery asp.net-mvc master-pages

我已经读过这些书了,我已经用Google搜索了它,但我仍然没有得到任何结果。我有一个MVC应用程序,我将jquery的引用放入母版页,以及注册初始化代码,如下所示:

<script src="~/Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script src="~/Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

<script>
    $(function () {
        $("#txt").click(function () {
            var $ctrl = $('<input/>').attr({ type: 'text', name: 'text', value: 'text' }).addClass("text");
        $("#holder").append($ctrl);
    });

});
</script>

该代码的目的是将文本框添加到ID为#34; div&#34;的div中。当id为&#34; txt&#34;的按钮时被压了。我从网上得到了这个代码,它在那个页面上工作得很好。我不能再找到它了,或者我会包含链接。 我做了这样的按钮:

<input type="button" id="txt" value="Add TextBox" />
<div id="holder"> this is the holder </div>

但是,按下按钮时绝对没有任何反应。所有我想知道的是,JQUERY CODE去了哪里?我是否将所有功能都放在母版页的头部?我把它放在每个aspx页面?我把它放在一个单独的文件中,如果是这样,我在哪里以及如何引用它?所有的书对我来说都没有任何意义,我只是从jquery开始,这个驼峰是阻止我开始进入它的原因。 jquery代码在哪里?请帮忙。

4 个答案:

答案 0 :(得分:0)

<script src="@Url.Content("~/Scripts/jquery-1.4.1.js")" type="text/javascript"></script>

答案 1 :(得分:0)

见这里:http://jsfiddle.net/UukmR/1/

它运作正常吗?

确保所有脚本引用都正确无误,并将它们包含在母版页的头部。

答案 2 :(得分:-1)

首先,你的jQuery代码没有运行的原因是因为~对浏览器没有意义。这需要切换到绝对参考:

<script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script>

..或者需要使用运行服务器端的代码将其转换为绝对引用:

// Using the ascx view engine
<script src="<%: Url.Content("/Scripts/jquery-1.4.1.js") %>" type="text/javascript"></script>
// Using the razor view engine
<script src="@Url.Content("/Scripts/jquery-1.4.1.js")" type="text/javascript"></script>

除此之外,您可以自由地将jQuery代码放在最有意义的地方。我个人发现的最好的策略是尽可能多地将javascript放入一个在头部引用的静态javascript文件中。除了保持你的javascript和标记分开(这看起来好多了)之外,还有一个额外的好处,就是将大量静态代码放入一个可以被浏览器缓存的静态文件中,从而减少跨越每个请求都有电线。

PS:-vsdoc.js文件纯粹是出于intellisense的缘故,不应该包含在实际的标记中。 VS.NET将自动检测其存在并在知道您正在使用相应的jquery文件时使用它。

答案 3 :(得分:-1)

不应该是你的代码:

<script>
    $(function () {
        $("#txt").click(function () {
            var $ctrl = $('<input/>').attr({ type: 'text', name: 'text', value: 'text' }).addClass("text");
        $("#holder").append($ctrl);
    });

});
</script>

是否包含在jquery $(document).ready()调用中?

所以尝试这样的事情:

<script>
$(document).ready(function(){
    $("#txt").click(function () {
        var $ctrl = $('<input/>').attr({ type: 'text', name: 'text', value: 'text' }).addClass("text");
        $("#holder").append($ctrl);
    });
});
</script>