一尘不染

如何通过AJAX渲染局部视图?

ajax

对于那里的MVC专家来说,这应该相对简单,但我仍在学习中。

  • 简单来说,我有一个视图不是强类型的ViewPage<dynamic>
  • 在此视图上,我有一个文本框,使用jQuery的AutoComplete对其进行了扩展
  • 当用户在文本框中键入内容时,自动完成功能将对Controller进行AJAX调用,该Controller会调用存储过程,并返回具有2个属性的JSON记录集合:
    • 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?


阅读 251

收藏
2020-07-26

共1个答案

一尘不染

您可以使用jQuery从控制器请求html以及Json。因此,您的jQuery可能如下所示:

$.get(action, null, function(data){
  $('#someDiv').html(data);
}, 'html');

您的控制器可能会返回:

return PartialView("SomePartial", Model)

并将html呈现到屏幕上

2020-07-26