2008-10-28 37 views
4

我一直在开发一个简单的网站使用asp.net MVC,我开始添加一些JQuery \ JSON的善良。Asp.Net MVC JQuery善良

我的问题是直到现在我所有的'视图'已经强烈类型,我一直在建立基于ViewData.Model.MyViewsData数据的视图。现在,一旦视图被渲染,我做了一个Ajax样式的请求,我得到新的数据作为JSON,我需要更新我的视图。现在,当我不再访问所有原始ViewData时,如何使用新数据更新我的视图?

我猜我需要两件事情之一:总是使用Jquery \ JSON获取数据,忘记使用ViewData或者对视图进行某种部分渲染?

任何教程或样品将不胜感激。

非常感谢

回答

4

我使用jQuery和单轨的MVC框架 - 我们用这两种方法。

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

The alternative is very similar - 不是手动设置控制内容,只需应用在局部视图中返回的HTML(确保布局被取消,因为您不想菜单等只是一个HTML片段)。

3

ViewData是一个服务器端的东西。它被视图引擎用来渲染你的页面,然后它被发送到浏览器。在页面交付后,Javascript在浏览器中运行。所以当你调用$ .getJson或者其他任何东西时,你都严格遵守DOM。

下面是一个非常简单的例子filling select options via JQuery and MS MVC

0

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

此时,您需要使用jQuery的DOM操作功能将新值插入到您的评论列表中(或者您尝试更新的任何内容)。因为这是一个Ajax调用,所以你不应该需要你所有的ViewData(因为页面不会刷新),只是创建/更新的东西。