当前位置: 首页 > 面试题库 >

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

贺立果
2023-03-14
问题内容

对于那里的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?


问题答案:

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

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

您的控制器可能会返回:

return PartialView("SomePartial", Model)

并将html呈现到屏幕上



 类似资料:
  • 问题内容: 我有一个带有选项卡的页面,我想在单击选项卡时仅通过ajax渲染不同的部分。我有一些代码,但我认为这不是最有效的方法。我希望有人能帮助我解决已经存在的代码,或者如果有一种更简单的方法,我将不胜感激。谢谢! HTML标签 学校负责人 最新JS 路线 问题答案: 请参阅我对上一篇文章的回答。这将为您提供一个在Rails中的AJAX想法:完成模型#更新后显示模型#新表单 您可以做的是在操作中呈

  • 问题内容: 我检查了这个问题,它解决了我的最初问题。但是我不希望仅当用户单击链接时才显示部分视图,我希望在页面加载时显示部分视图,并且可能在加载部分视图时显示进度指示器。 如何实现? 非常感谢您阅读本文。 问题答案: 如果要加载页面,然后通过ajax加载部分视图,则可以创建一个执行以下操作的对象: 然后在您的页面中执行以下操作:

  • 问题内容: 我在MVC应用程序中有此标记。 当它运行时,IngredientsListControl.ascx在浏览器中显示为新页面,并且不会更新Ingredientlistdiv。 这是我的控制器动作 我在这条线上做对了吗? 这就是我将控件呈现到div中的方式,以便它不会加载新页面。 马尔科姆 问题答案: 使用此功能时: …您应该注意,这与 它不会引发onsubmit事件,并且不会调用MVC的A

  • 问题内容: 我建立了一个复合组件,看起来像这样: 组件正确显示当前标签。 现在,当执行该动作时,什么也不会发生。但是,当我将Postfix添加到组件中的ID时,它可以正常工作(请参见下文)。 并使用后缀在render中定义ID: 有人可以向我解释为什么仅当我在ID中添加后缀时才起作用吗? 问题答案: 这个问题实际上有两个方面。 第一个问题是,实际上指定复合部件的ID 本身 的。默认情况下,HTML

  • Rails 布局和视图渲染 本文介绍 Action Controller 和 Action View 中布局的基本功能。 读完本文,你将学到: 如何使用 Rails 内建的各种渲染方法; 如何创建具有多个内容区域的布局; 如何使用局部视图去除重复; 如何使用嵌套布局(子模板); 1 概览:各组件之间的协作 本文关注 MVC 架构中控制器和视图之间的交互。你可能已经知道,控制器的作用是处理请求,但经

  • 问题内容: 我有一个呈现部分视图的控制器动作: 然后将返回的内容加载到动态元素中,如下所示: 因此,这将创建一个div,然后将返回的内容加载到该div中。 我想对此稍作更改,以便仅在对控制器的调用成功的情况下创建容器div。 所以: jQuery调用控制器动作 控制器返回PartialView,如果找不到ID,则返回null 如果返回PartialView,则将创建容器并使用返回的内容加载该容器。