如何通过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将呈现在屏幕上