4

我需要为我正在构建的 ASP.NET MVC 应用程序开发一个通用的基于 jQuery 的搜索插件,但我无法弄清楚它应该如何适应,或者最佳实践是什么。我想做以下事情:

$().ready(function() {
    $('#searchHolder').customSearch('MyApp.Models.User');
});

只要我在 Models.User 上实现了特定的接口,jQuery 就能够与反射服务对话以通用地构建相关的 UI。

听起来很有趣,但似乎我现在正在从 View 调用 JavaScript,这反过来会执行一些与 View 相关的活动来构建搜索 UI,然后进行搜索并与将要执行的用户交互在那里扔一堆控制器任务。

那么这真的适合哪里呢?有没有一种不同的方式可以构建我的 jQuery 插件,使其更符合 MVC 的理念?当 MVC在另一个 MVC 结构中缩小到自己的形式时,它是否可以工作?为了一个插件,我应该忽略这些问题吗?

4

5 回答 5

2

只是为了跟进(我很惊讶没有其他人对此有任何意见),为了保持最佳实践,我选择采用jTemplates

它使我能够从我的服务器端控制器请求一些模型样式的 JSON,并使用类似于我已经在视图中使用的语法来处理它,它现在保持任何所需的 JavaScript UI MVC 兼容。客户端需要从服务器请求 View 模板有一点开销,但是如果这变得太慢,我总是可以牺牲一点,然后将其与初始 JSON 请求一起发送。

于 2008-10-14T08:07:57.513 回答
1

在我看来,你想要的是partials一个 RoR 术语,所以不确定它们在 ASP.NET MVC 中是否以相同的格式存在。基本上,partial 是在自己的文件中定义的 View 的一部分,可以从任何地方调用。因此,在您的搜索控制器中,您将拉出所要求的模型,进行一些反射以获取数据并将其构造为 JSON,并获取该模型的部分视图。如果您遵循基于模型名称命名部分的约定,您可能会发现它会更容易,从而节省您的任何大switch语句或额外的配置文件。

我可能是错的,但听起来你有点担心从 Javascript 调用 Controller 并返回 HTML。这完全没问题,它只是适当地获取 View 并确保您不处理页面的其余部分的情况,只处理该调用所需的内容(为什么 MVC 比 s 好得多UpdatePanel!)

于 2008-10-14T08:46:11.650 回答
1

所以我实际上已经对此进行了很多研究,并发现新的官方支持的 jquery 插件 tmpl 可以用作视图引擎。我在这里写了一个教程,如何在 JavaScript 中创建完整的 MVC/MVP 范例

于 2010-12-14T05:11:34.827 回答
0

我不确定我是否理解您要完成的工作,但我会在服务器上构建相关 UI 作为您视图的一部分(例如,作为可以在不同页面上呈现的用户控件),将其设置为 display:none样式并在客户端使用 JQuery 在用户单击某个链接或其他内容时显示它。

之后,插件将使用 $.ajax 将搜索请求发送到您的应用程序,您可以在其中执行相关活动并使用搜索结果呈现部分视图。然后,您的 ajax 代码会拾取它并将其插入到您的文档中。

于 2008-10-13T08:22:26.283 回答
0

就好像你有两个独立的系统一样,在服务器上有模型、视图和控制器,在客户端(浏览器)上有(Javascript/DOM)模型、视图和控制器。Ajax 只是客户端从服务器请求服务的方法。

于 2008-10-14T08:33:18.257 回答