如何使用AJAX加载以html呈现的完整局部视图(所以我只设置了div.html)
我需要ajax调用来调用控制器操作,该操作将呈现完整的局部视图(红色)并将其附加到当前加载的视图的末尾吗?
[我知道如何附加到DOM以及如何进行AJAX调用]
我需要知道什么是最好的 管道 方法,该 动作应该返回哪种类型的ActionResult, 以及 是否已经有内置的机制
以避免重新发明轮子?
ASP.NET MVC中有内置的Ajax帮助器,可以覆盖基本方案。
您需要安装和引用jquery.unobtrusive-ajax
JavaScript库(+
jQuery依赖关系)。然后在您的主视图中(假设为index.cshtml)放入以下代码:
Index.cshtml
@Ajax.ActionLink("Load More Posts", "MorePosts", new AjaxOptions()
{
HttpMethod = "GET",
AllowCache = false,
InsertionMode = InsertionMode.InsertAfter,
UpdateTargetId = "posts-wrapper"
})
<div id="posts-wrapper"></div>
注意 :@Ajax.ActionLink
helper接受AjaxOptions
参数以进行更多定制。
在控制器中(假设为 HomeController.cs ),您应该返回PartialViewResult
:
public ActionResult MorePosts(int? offset, int? count)
{
IEnumerable<Post> posts = myService.GetNextPosts(offset, count);
return PartialView(posts);
}
最后,您定义 MorePosts.cshtml 部分视图:
@model IEnumerable<Post>
@{
Layout = null;
}
@foreach (var post in Model)
{
<div class="post">
<div>>@post.Prop1</div>
<div>@post.Prop2</div>
</div>
<hr />
}
就是这样。当某些用户单击Load More
按钮时,将加载更多帖子。
注意1 :您可以实施OnBegin
函数,以实现确定哪些逻辑要加载的实际逻辑的功能(例如,获取最后加载的逻辑的ID并将其发送到服务器)。
注意2
:使用自定义jQuery.ajax
调用(无需jquery.unobtrusive)可以实现相同的结果。唯一的区别是手动ajax调用和click事件。
希望这可以帮助。如果需要,我可以写一个更完整的示例。
问题内容: 如何在控制器的JsonResult中渲染要使用的局部视图? 问题答案: 是一种自定义扩展方法,将视图呈现为。 文章中没有提到它(您最初提到的是什么),但是您可以在文章附带的示例代码中找到它。可以在\ Helpers \ Reders.cs下找到它 这是有问题的方法的代码:
问题内容: 我使用jquery发出ajax请求,这将调用以下spring控制器: 但是我收到以下错误: 如果需要,这里是我使用jQuery进行的ajax调用: 编辑 如果使用以下命令,则会出现相同的错误: 问题答案: 对于在家的观众…我发现问题是由于控制器中定义的方法签名与ajax调用不匹配。我从控制器方法中删除了参数。然后,我还意识到我还必须返回新的模型和视图。这是工作代码: 我更改为ajax调
问题内容: 我试图通过传递一些参数的AJAX调用MVC控制器动作。 我有时 在此应用程序中执行此操作 ,并且效果很好。 我不知道为什么只有 这一个 无效。 这是我的控制器方法: 提醒一下,我正在做我在其他Ajax调用中所做的事情,但是特别是 只有这一条 不起作用。 有人有什么主意吗? 问题答案: 始终使用或html helper方法来构建操作方法的url。无论您当前的页面/路径如何,它都会正确构建
问题内容: 我正在将数据从javascript应用程序发送到MVC5控制器,但是,当数据提交到Submit controller操作时,它永远不会被调用。我有一些非常简单的映射器,它们创建以下JSON对象: 然后,我使用以下代码发送数据: 我的控制器代码如下: 我有以下问题: 但是,从不会调用Submit,但是,如果我注释掉了控制器参数,那么它将被调用,这是为什么呢? 从上面看来,控制器框架似乎无
问题内容: 我正在使用此应用程序,我需要所有视图控制器,但一个需要纵向显示。我特别需要一个单一的视图控制器,使其能够旋转至手机所处的方向。 为此,我以模态形式呈现(未嵌入NavigationController中) 所以(例如)我的结构是这样的: 窗口-肖像 根视图控制器(UINavigationController-肖像) 家庭视图控制器(UIViewController-肖像) 详细信息视图控