jquery代码在局部视图中的位置在哪里?

时间:2010-01-21 20:03:14

标签: jquery html asp.net-mvc partial-views

我是asp.net MVC和JQuery的新手。我使用NerdDinner教程创建了一个MVC站点。对于创建和编辑视图,我使用部分视图(下面简化的代码)进行数据输入。我在哪里放置我的jquery代码?

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Marlow.Controllers.SubcontractFormViewModel>" %>

<% using (Html.BeginForm()) {%>

    <fieldset>
        <legend>Fields</legend>
        <p>
            <label for="grp">group:</label>
            <%= Html.DropDownList("grp", Model.Groups) %>
            <%= Html.ValidationMessage("grp", "*") %>
        </p><p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

<% } %>

4 个答案:

答案 0 :(得分:1)

您可以将jquery代码放在任何地方,无论是在部分页面还是在您调用部分文件或外部文件的页面中。

这取决于你希望你的jquery代码如果你将它嵌入部分它将会触发的部分来触发它

如果您的问题是是否将其置于我们的外部&lt; %%&gt;答案在外面

答案 1 :(得分:1)

只要将脚本标记放在(X)HTML结构的有效部分中,这并不重要。你应该使用jQuery的document.ready函数来延迟运行脚本,直到整个文档被加载。这意味着您不依赖于它正在操作的HTML之后的脚本。

话虽如此,通常最好将尽可能多的脚本放入外部脚本文件中,而不是将其嵌入到视图中。 (外部脚本文件应该包含在HTML文档正文的底部,因为这样可以提供最佳的浏览器性能)

答案 2 :(得分:1)

您可以将其放在部分视图中或加载它的页面中。但要注意的一件事是,如果您在内部部分视图中的元素上触发jQuery事件,并且如果从其他位置加载局部视图,则在主页面上加载脚本(即GET)然后这些事件将不会附加到DOM元素。

因此,如果您要将脚本放在主页面中,请确保使用jQuery Live函数连接事件。

答案 3 :(得分:1)

我不太确定那些说你可以把jQuery代码放在任何你喜欢的地方的人。

我非常重视分离问题,在这种情况下,将代码放在实际的视图而不是PartialView中可能是谨慎的。

我这样说是因为只要将代码放在PartialView中,就会永远定义它的行为。如果将代码放在View中,它可以让您以后灵活地重新定义行为。

现在要完全灵活,您可以将代码放在.js中,然后从View加载它。然后你也可以在其他视图中重复使用代码。

另一个好处是,如果你的jQuery正在进行部分回发,那么将它放在View级别允许你自定义View中的/ controller / action而不是settign变量或将模型传递给PartialView以获得相同的结果

上述显然依赖于PartialView可以以其他方式重用的前提。如果它是锁定的和刚性的,那么我肯定会将代码放在局部视图中。