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

时间:2010-10-21 23:24:54

标签: c# jquery asp.net-mvc ajax asp.net-mvc-2

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

  • 我有一个不是强类型的视图,只是ViewPage<dynamic>
  • 在这个视图中,我有一个文本框,使用jQuery的AutoComplete
  • 进行扩展
  • 当用户在文本框中键入内容时,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吗?

1 个答案:

答案 0 :(得分:13)

您可以使用jQuery从控制器请求html和Json。所以你的jQuery看起来像这样:

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

你的控制者可以回复:

return PartialView("SomePartial", Model)

html将呈现在屏幕上