如何通过AJAX渲染局部视图?
对于那里的MVC专家来说,这应该相对简单,但我仍在学习绳索。
- 我有一个不是强类型的视图,只是
ViewPage
。 - 在这个视图中,我有一个文本框,使用jQuery的AutoComplete进行扩展
- 当用户在文本框中键入内容时,AutoComplete会对Controller进行AJAX调用,Controller调用存储过程,返回JSON记录集合,包含2个属性:
- ID (项目的标识符 )
- 名称 (项目名称)
现在,使用jQuery AutoComplete UI插件,当用户单击自动完成中显示的项目之一时,将调用客户端事件,并传递JSON对象:
// .. snip heaps of jQuery select: function (event, ui) { // ui is a JSON object: // ui.item.id // ui.item.name }
现在我的问题是 – 从这个客户端事件,我需要在同一页面上(在texbox下面)显示有关此项目的扩展信息。 (显然需要对服务器进行另一次AJAX调用)。
我怎样才能做到这一点? 我唯一能想到的就是让jQuery调用另一个返回单个JsonResult
控制器,然后手动解析这个JSON,显示我想要的HTML。
这是唯一的方法吗? 我可以使用帮手吗? 我的View不是强类型的原因是因为当页面加载时,没有显示关于模型的信息,只是文本框。
我真的希望我可以创建一个强类型的局部视图,并以某种方式在这个局部视图上调用RenderPartial,传递我想要显示的项目的id。 这可能来自客户端/ AJAX吗?
您可以使用jQuery从控制器请求html和Json。 所以你的jQuery看起来像这样:
$.get(action, null, function(data){ $('#someDiv').html(data); }, 'html');
并且您的控制器可以返回:
return PartialView("SomePartial", Model)
并且html将呈现在屏幕上