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