MVC 局部加载页面的实例

我们在做MVC 进行某一块的局部刷新,有的使用AJAX 请求,有的使用局部页;

下面我给大家推荐一种使用局部页面实现的这种方式:

第一步:

嵌套视图页

 <div id="showAudit">
        @*操作信息*@
        @{Html.RenderPartial("ShowAudit", Model);}       
    </div>
View Code

 

第二步:

编写后台代码

[HttpGet]
        public ActionResult ShowAudit(int id)
        {
            using (var _ctx = new BtDbContext())
            {
                var memberSupply = _ctx.MemberSupplys.FirstOrDefault(c => c.MemberId == id);

                MemberSupplyModel model = new MemberSupplyModel();

                if (memberSupply != null)
                {

                    model.MemberId          = memberSupply.MemberId;
                    model.OrderNumber       = memberSupply.OrderNumber;
                    model.CardId            = memberSupply.CardId;
                    model.Name              = memberSupply.Name;
                    model.MemberMobile      = memberSupply.MemberMobile;

                    model.State             = memberSupply.State;
                    model.CreateTime        = memberSupply.CreateTime;
                    model.UpdateTime        = memberSupply.UpdateTime;
                    model.CompanyName       = memberSupply.CompanyName;
                    model.CompanyAddress    = memberSupply.CompanyAddress;

                    model.CompanyPhone      = memberSupply.CompanyPhone;
                    model.CompanyUrl        = memberSupply.CompanyUrl;
                    model.ManagementProduct = memberSupply.ManagementProduct;
                    model.ContactJob        = memberSupply.ContactJob;
                    model.ContactPeople     = memberSupply.ContactPeople;

                    model.ContactMobile     = memberSupply.ContactMobile;
                    model.Memo              = memberSupply.Memo;
                    model.OpEmployeeName    = memberSupply.OpEmployeeName;
                }

                return PartialView(model);
            }
        }
View Code

第三步:

编写视图页面:

@using WechatMall.Common.Extensions;

@model WechatMall.Model.ViewModel.MemberSupplyModel

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@if (Model.State != WechatMall.Common.EnumHelper.MemberApplyForStatus.AuditNot)
{
    

<table class="ltable" style="margin-top:30px;">
    <thead>
        <tr>
            <th colspan="6" style=" text-align:left;padding-left:20px; font-weight:bold; background-color:#ffffff; ">操作信息</th>
        </tr>
    </thead>
    <tbody class="ltbody">
        <tr>
            <td style="width:18%">@Html.DisplayNameFor(model => model.OpEmployeeName)</td>
            <td style="width:18%">
                @Html.DisplayFor(modelItem => Model.OpEmployeeName)
            </td>

            <td>@Html.DisplayNameFor(model => model.State)</td>
            <td style="width:15%">
                @Model.State.ToDescriptionString()
            </td>

            <td>@Html.DisplayNameFor(model => model.UpdateTime)</td>
            <td>
                @Html.DisplayFor(modelItem => Model.UpdateTime)
            </td>
        </tr>
        <tr>
            <td>@Html.DisplayNameFor(model => model.Memo)</td>
            <td colspan="5">
                @Html.DisplayFor(modelItem => Model.Memo)
            </td>
        </tr>
    </tbody>
</table>
}
View Code

第四步:

编写JS 代码

    $("#sbmbtn").click(function () {

            $.post('@Url.Action("AuditDispose", "Members")', $("#form1").serialize(), function (json) {

                if (json.f) {
                    $("#showAudit").load('@Url.Action("ShowAudit", "Members", new { id = Model.MemberId }, Request.Url.Scheme)')   
                }
                else {
                    alert(json.ext);
                }
            });


        });
View Code

 

这样就可以轻松搞定了;推荐一下参考网址:https://cmatskas.com/update-an-mvc-partial-view-with-ajax/

那有里有不对的地方希望大家指出来,或者有更好的方法提出来,大家相互学习,进步..

转载于:https://www.cnblogs.com/lizichao1991/p/5695477.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET MVC 局部刷新(Partial Refresh)是一个技术特性,允许开发者仅更新页面的一部分而无需完全重新加载整个页面。这可以提升用户体验,并减少服务器负担。以下是实现 ASP.NET MVC 局部刷新的一些步骤: ### 实现步骤 #### 1. 创建模型(Model) 首先,创建一个数据模型(例如 `Product`),并确保它能够在数据库中存储产品信息。 ```csharp public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } } ``` #### 2. 数据访问层(Repository 或 DbContext) 通常,你可以使用 `DbContext` 来处理数据库操作,也可以自定义一个 Repository 类来封装所有数据相关的操作。这里我们使用简单的 `DbContext` 示例: ```csharp public partial class AppDbContext : DbContext { public DbSet<Product> Products { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Product>().ToTable("Products"); } } ``` #### 3. 控制器(Controller) 在控制器中创建一个 Action,用于获取数据并将它们传递给视图。例如: ```csharp public ActionResult GetProducts() { var products = _context.Products.ToList(); return PartialView("_ProductList", products); } ``` 这里假设 `_context` 已经引用了 `AppDbContext` 的实例,并且 `_ProductList` 视图已经预先配置好了展示产品的模板。 #### 4. 视图(View) 在视图中,我们可以直接插入 HTML 表单、列表或其他元素。为了实现局部刷新,我们需要利用 AJAX 请求。下面是一个简单的示例: HTML: ```html <div id="product-list"> @{await Html.PartialAsync("_ProductList");} </div> <script type="text/javascript"> function refreshData() { $.ajax({ url: '/Products/GetProducts', success: function(data) { $('#product-list').html(''); await Html.RenderAction("GetProducts", "Home"); }, error: function(error) { console.log('Error:', error); } }); } // 刷新按钮点击事件 document.getElementById("refresh-button").addEventListener("click", refreshData); </script> ``` 这里的 AJAX 调用会请求 `/Products/GetProducts`,成功后将返回的数据清空当前 `#product-list` 区域,并通过 JavaScript 再次渲染视图到该区域。 #### 相关问题 - 扩展与优化 1. **如何在大型项目中管理局部刷新?** 在大型项目中,可能会涉及到多个控制器和视图进行局部刷新。使用异步编程、缓存策略以及版本控制机制可以帮助简化管理和提高性能。 2. **局部刷新与全页刷新的区别是什么?** 全页刷新意味着用户界面的所有部分都会重新加载,包括所有动态内容和静态资源。相比之下,局部刷新只针对特定部分的内容进行更新,减少了网络传输量和服务器压力。 3. **如何确保局部刷新的安全性和性能?** 确保局部刷新安全的方式包括使用 CORS(跨源资源共享)、HTTPS 加密传输、输入验证等。从性能角度考虑,可以采用缓存策略、最小化 HTTP 请求、使用CDN加速等手段来优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值