jQuery UI在MVC中的适用范围是什么?

时间:2008-10-13 07:58:21

标签: javascript model-view-controller jquery-plugins

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

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

只要我在Models.User上实现了一个特定的接口,jQuery就能与一个反射服务进行通信,从而一般地构建相关的UI。

听起来很有趣,但似乎我现在正在调用View中的JavaScript,而后者又要进行一些与View相关的活动来构建搜索UI,然后进行搜索并与用户交互它会在那里抛出一堆Controller任务。

那么这真的适合哪里?有没有不同的方式我可以构建我的jQuery插件,以便它更符合MVC的想法?当MVC在另一个MVC结构中缩小到自己的形式时,MVC是否有效?我是否应该为了一个插件而忽略这些问题?

5 个答案:

答案 0 :(得分:2)

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

它使我能够从我的服务器端Controller请求一些模型风格的JSON,并使用类似于我在View中使用的语法处理它,现在可以保持任何所需的JavaScript UI MVC兼容。客户端需要从服务器请求View模板有一小部分开销,但如果变得太慢,我总是可以牺牲一点,并使用初始JSON请求发送它。

答案 1 :(得分:1)

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

我可能错了,但听起来你有点担心从Javascript调用Controller并返回HTML。这完全可以,它只是一个适当地获取View并确保你不处理页面其余部分的情况,只是你需要的那个调用(为什么MVC比UpdatePanel更好!)

答案 2 :(得分:1)

所以我实际上一直在研究这个问题,并且发现新的官方支持的jquery插件tmpl可以作为视图引擎。我有written a tutorial here,你如何在JavaScript中创建一个完整的MVC / MVP范例

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

将其视为两个单独的系统,包括服务器上的模型,视图和控制器以及客户端(浏览器)上的(Javascript / DOM)模型,视图和控制器。 Ajax只是客户端从服务器请求服务的方法。