0

我是 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

4 回答 4

1

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

这取决于你希望你的jquery代码如何触发,如果你将它嵌入到partial中,它会在你调用它的任何地方触发

如果您的问题是是否将其放在 <%%> 之外,则答案在外面

于 2010-01-21T20:13:19.233 回答
1

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

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

于 2010-01-21T20:15:59.767 回答
1

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

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

于 2010-01-21T20:19:29.553 回答
1

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

我很重视关注点的分离,在这种情况下,将代码放在实际的视图中而不是 PartialView 中可能是谨慎的。

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

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

另一个好处是,如果您的 jQuery 正在执行部分回发,则将其放置在视图级别允许您在视图中自定义 /controller/action,而不是设置变量或将模型传递给 PartialView 以获得相同的结果。

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

于 2010-01-21T22:54:49.817 回答