Asp.Net MVC JQuery 的优点

Posted

技术标签:

【中文标题】Asp.Net MVC JQuery 的优点【英文标题】:Asp.Net MVC JQuery goodness 【发布时间】:2010-09-19 14:51:40 【问题描述】:

我一直在使用 asp.net MVC 开发一个简单的网站,并且开始添加一些 JQuery\JSON 优点。

到目前为止,我的问题是我所有的“视图”都是强类型的,并且我一直在根据来自 ViewData.Model.MyViewsData 的数据构建视图。现在,一旦视图被渲染并且我执行了一个 Ajax 样式请求,我就会以 JSON 形式返回新数据,并且我需要更新我的视图。现在,当我不再有权访问所有原始 ViewData 时,如何使用新数据更新我的视图?

我猜我需要做以下两件事之一:始终使用 Jquery\JSON 取回数据而忘记使用 ViewData 或对我的视图进行某种部分呈现?!

任何教程或示例将不胜感激。

非常感谢

【问题讨论】:

【参考方案1】:

我将 jQuery 和 Monorail 用于 MVC 框架 - 我们同时使用这两种方法。

Here's an example for the jquery approach - 忽略它是 php 的事实。方法是一样的,即在 JSON 调用中的 postback 函数中,直接访问 JSON 返回对象以填充通过 css 选择器访问的前端控件。

The alternative is very similar(归档here) - 无需手动设置控件内容,只需应用部分视图中返回的 html(确保取消布局,因为您不希望菜单等只是一个 html 片段)。

【讨论】:

【参考方案2】:

ViewData 是服务器端的东西。视图引擎使用它在将页面发送到浏览器之前呈现页面。页面交付后,javascript 在浏览器中运行。因此,当您调用 $.getJson 或其他方式时,您正在严格处理 DOM。

这是filling select options via JQuery and MS MVC 的一个非常简单的示例。

【讨论】:

【参考方案3】:

如果您使用控制器的 JSON 方法为您的 Ajax 请求返回数据,您可以将数据序列化为 Json,然后您可以从 JavaScript 中访问它。例如,如果您在文章/博客文章页面底部有一个评论表单,并且您想通过 jQuery $.post 调用添加评论,您可以在控制器中创建评论对象,使用 "返回 JSON(theNewComment);"然后在 jQuery 的返回函数中,您可以访问评论对象的属性。你不会得到智能感知,但如果对象被正确创建和返回,数据就会在那里。

此时,您需要使用 jQuery 的 DOM 操作功能将新值插入您的评论列表(或您要更新的任何内容)。

因为它是一个 Ajax 调用,所以您不需要所有的 ViewData(因为页面不会刷新),只需要创建/更新的内容。

【讨论】:

以上是关于Asp.Net MVC JQuery 的优点的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 中的 ASP.NET AJAX 与 jQuery

基于 jQuery 的专业 ASP.NET WebForms/MVC 控件库!

ASP.NET MVC

ASP.NET MVC - jquery 日期选择器

asp.net mvc4 更改 jquery 版本

Three steps to use jQuery UI in ASP.NET MVC 5