【问题标题】:Where does jquery code go in a partial view?jquery 代码在局部视图中的位置在哪里?
【发布时间】:2010-01-21 20:03:14
【问题描述】:

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

<% } %>

【问题讨论】:

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


    【解决方案1】:

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

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

    如果你的问题是是否把它放在我们的外面 答案是外面

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

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

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

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-01-08
            相关资源
            最近更新 更多