gpt4 book ai didi

javascript - 如何为 ASP.NET MVC 3 + Razor View 封装可重用的 "control"

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:22:10 25 4
gpt4 key购买 nike

我正在寻找有关如何创建可重用“控件”以用于多个 MVC 3 View 的最佳实践。我可以创建一个 Html 帮助器扩展方法(以编程方式或使用 razor 中的声明性帮助器),或者我可以创建一个局部 View 。

在我的例子中,诀窍是我需要做的不仅仅是将一些 HTML 精确地转储到 View 调用 helper/partial 的位置。除了在该位置放置一些 HTML 标记外,我还需要添加一些 javascript 代码以使其工作。通常,我会把这段代码放在页面的其他地方(例如底部)。这当然不是严格要求的。另请注意,javascript 不是特定于控制实例的。换句话说,可以编写 javascript 来查找页面上控件 HTMl 标记的所有实例,并使用适当的事件等“激活”它。

我想到了几种可能。

  1. 让助手/部分转储 HTML 和 <script>标记就在它被调用的地方。这似乎是个坏主意,因为这意味着该控件每页只能使用一次。
  2. 有两个 helper 。一个输出 HTML 标记,第二个输出 javascript。第二个只会被调用一次,并且会从页面底部调用,以便脚本在正确的位置结束。如果我发明第二个这样的控件,我将有 4 个助手(2 个用于 HTML,2 个用于 Javascript)。
  3. 发明某种 ScriptManager,控件可以向其注册 javascript。 scriptmanager 会有某种帮助器,可以添加到页面底部,并会为所有已注册脚本片段的控件转储 javascript。对 scriptmanager 帮助程序的调用可以在 _layout.cshtml 中,以便它会自动发生在任何需要它的页面上。当页面不需要它时,它什么都不做。我猜这看起来不太像 MVC。
  4. 只需要一个生成 HTML 的助手,然后将 javascript 添加到包含在每个页面上的 site.js 中。如果 javascript 在页面上找不到任何相关标记(标记将具有具有特定类的包装器元素),它会足够聪明,不会执行任何操作。不过,在所有页面上搜索标记都会产生开销,包括没有任何这些控件的页面。
  5. 与 #4 相同,但将 javascript 放在它自己的 .js 文件中,并仅将其包含在使用该控件的页面上。这对于不使用该控件的页面更有效,但它是一个额外的 .js 文件和关联的 HTTP 请求,适用于使用该控件的页面。

我倾向于#4,但这是一个已解决的问题吗?有没有更好的第 6 个选项?

最佳答案

我的公司正在使用 MVCContrib 可移植区域将代码打包到 DLL 中以供可重用的“组件”

这些组件中的每一个都可以通过扩展方法调用。例如:

Html.Components().ShowPoll();

在这些组件中的每一个中,都有一种方法可以注册多个作为嵌入式资源的 css/js 文件。我们的主站点将提取资源文件并在提供之前缩小 + 组合它们。

该组件还将注册将在 JQuery 的 Document.OnReady 事件期间调用的任何页面事件。这允许每个组件都是迷你站点,具有自己的路由、模型和 View 的独立功能。

在整个站点中,为所有组件提供相同的 zip up JS。一是因为文件将被缓存,二是消除了确定页面上有哪些组件及其所需资源的复杂性。

如果您想了解有关此设置的更多信息,请告诉我。

关于javascript - 如何为 ASP.NET MVC 3 + Razor View 封装可重用的 "control",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com