ASP.Net Core使用Ajax局部更新

由于目前ASP.NET Core中没有提供Ajax帮助器,所以参照 上一篇帖文,使用data-ajax-*属性来使用jQuery Unobtrusive Ajax功能实现HTML的局部页面元素更新。

在.cshtml文件中,根据文章分页,分别生成各页链接:

<div id="content">
    @if (Model.ContentArray.Count() > 1)
    {
        @Html.Raw(Model.ContentArray[0])
    }
    else
    {
        @Html.Raw(Model.CurrentAtricle.Content)
    }
</div>

<ul class="pagination offset-5">
@for (int i = 0; i < Model.ContentArray.Length; i++)
{
    <li class="page-item">
       <a asp-controller="Home" asp-action="GetContent" asp-route-articleId="@Model.CurrentAtricle.ArticleId"
          asp-route-num="@i" data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace"
          data-ajax-update="#content" class="mypager page-link">@(i + 1)</a>
   </li>
   @:&nbsp;&nbsp;&nbsp;&nbsp;
 }
</ul>

为了实现局部更新,我在其中分页链接<a>标记元素中插入了多条data-ajax-*属性:
data-ajax-method="GET"表示提交方式为GET;data-ajax-mode="replace"表示更新方式为替换原有内容;data-ajax-updage="#content"表示替换id号为content元素下的内容。
这样,通过分页链接就可以分别获取内容进行局部更新了。

链接中用到了自定义的GetContent方法,通过文章id和页索引num进行检索,返回根据分页标志生成的文章内容数组元素。如下:

public IActionResult GetContent(int articleId, int num = 0)
{
    Article article = _articleService.Find(articleId);

    if (article == null)
    {
        return NotFound();
    }

    string[] contentArray = Regex.Split(article.Content, "_ueditor_page_break_tag_", RegexOptions.IgnoreCase);

    if (contentArray.Length > 1 && num < contentArray.Length)
    {
        return Content(contentArray[num]);
    }
    else if (contentArray.Length == 1)
    {
        return Content(contentArray[0]);
    }

    return Content(null);
}

原文地址:https://www.cnblogs.com/moonblogcore/p/11659892.html

时间: 2024-08-02 20:30:11

ASP.Net Core使用Ajax局部更新的相关文章

asp.net core 通过ajax上传图片及wangEditor图片上传

asp.net core 通过ajax上传图片 .net core前端代码,因为是通过ajax调用,首先要保证ajax能调用后台代码,具体参见上一篇.net core 使用ajax调用后台代码. 前端代码如下: @Html.AntiForgeryToken() @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} <div> <form id="uploadForm">

.NET Core 3.0 Preview 6中对ASP.NET Core和Blazor的更新

原文:.NET Core 3.0 Preview 6中对ASP.NET Core和Blazor的更新 我们都知道在6月12日的时候微软发布了.NET Core 3.0的第6个预览版.针对.NET Core 3.0的发布我们国内的微软MVP-汪宇杰还发布的官翻版的博文进行了详细的介绍.具体的可以关注"汪宇杰博客"公众号,或者我的"DotNetCore实战"公众号然后在历史文章里面进行查阅.而我们这篇文章将会介绍本次更新中对ASP.NET Core和Blazor所做的更

使用ajax局部更新Razor页面

Razor功能非常强大,但是本身并不能做到无刷新,所以需要配合ajax使用 本文就做一个简单例子,实现Razor配合ajax做到局部刷新. 首先,我们创建一个MVC项目 让我们创建一个简单的Controller Book 然后对其添加一个视图,并且添加上一些简单的Html代码 1 @{ 2 ViewBag.Title = "Index"; 3 Layout = null; 4 } 5 <!DOCTYPE html> 6 <html> 7 <head>

ajax局部更新

js //点击启用 $(".status").on("click",function(){ var id = $(this).attr("statusId"); var customName = $(this).attr("customName"); var customStatus = $(this).attr("value"); var statusId = $(this).attr("sta

解决ASP.NET Core部署到IIS,更新项目&quot;另一个程序正在使用此文件,进程无法访问&quot;

问题:部署到IIS上的ASP.NET Core项目,在更新的时候会进程占用的错误 初步解决方案: 1,关闭应用程序池 2,关闭网站 3,更新项目 缺点:网站没法访问,部署项目停的时间过长 查询官方文档后,官方给出的方案: 结合官方文档,找到了一个目前看算是比较好的解决方案(一定要看底部的特别注意) 好点的解决方案(一次配置后,1秒钟更新): 1,在D盘根目录创建一个app_offline.htm文件,注意是.htm文件,不是.html 2,创建一个待发布文件夹,把需要更新的项目文件放到该目录下

ASP.NET Core 打造一个简单的图书馆管理系统(九) 学生信息增删(终章)

前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/?view=aspnetcore-2.1&tabs=windows <Pro ASP.NET MVC 5>.<锋利的 jQuery> 当此系列文章写完后会在一周内推出修正版. 此系列皆使用 VS2017+C# 作为开发环境.如果

ASP.NET Core 打造一个简单的图书馆管理系统 (修正版)(七) 学生信息增删(伪终章)

前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/?view=aspnetcore-2.1&tabs=windows <Pro ASP.NET MVC 5>.<锋利的 jQuery> 此系列皆使用 VS2017+C# 作为开发环境.如果有什么问题或者意见欢迎在留言区进行留言.

asp.net core 系列之Performance的 Response compression(响应压缩)

本文,帮助了解响应压缩的一些知识及用法(大部分翻译于官网,英文水平有限,不准确之处,欢迎指正). 什么是响应压缩?响应压缩简单的说就是为了减少网络带宽,而把返回的响应压缩,使之体积缩小,从而加快响应的一种技术(个人理解) 网络带宽是有限的资源.减少响应(response)的大小通常可以增加应用的响应性(即减少响应的大小可以加快响应的速度),这是很引人注目的(often dramatically).压缩(压缩compress)应用的响应可以减少装载的大小. 当使用响应压缩中间件时(Response

Jquery Ajax 页面局部更新

Ajax 是一个异步过程,页面中的一部分代码发出一个网络请求,在里面设置一个回调函数,如果网络请求得到返回,那么执行回调函数.在回调函数中的上下文和时间触发的上下文会有所不同,在jquery中的应用需求大多数时候是这样的.比如我点击了一个按钮,这个按钮是一个 tr 中的 td 中的内容,我可以通过这个点击时间确定当前行的任何属性,或者确定当前也面中的任何一个属性,只要这个页面的布局是又某种可控的过滤的话.需要实用到this关键字.还有就是 find() 方法.比如this.parent().fi