4

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

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

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

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

非常感谢

4

3 回答 3

4

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

这是 jquery 方法的一个示例- 忽略它是 php 的事实。方法是一样的,即在 JSON 调用中的 postback 函数中,直接访问 JSON 返回对象以填充通过 css 选择器访问的前端控件。

替代方法非常相似(在此处存档) - 无需手动设置控件内容,只需应用部分视图中返回的 html(确保取消布局,因为您不希望菜单等只是一个 html 片段)。

于 2008-10-28T16:12:13.357 回答
3

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

这是一个通过 JQuery 和 MS MVC 填充选择选项的非常简单的示例。

于 2008-10-28T17:59:02.283 回答
0

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

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

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

于 2008-10-30T19:41:12.403 回答