热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NClay.MVC实现数据查询,分页和排序

这一章节主要介绍通过NClay框架的Asp.netMVC功能实现数据查询,分页和排序.通过业务接口的制定、接口处理和视图三个主要部分来了解NClay.MVC的处理层次和使用规则。功

       这一章节主要介绍通过NClay框架的Asp.net MVC功能实现数据查询,分页和排序.通过业务接口的制定、接口处理和视图三个主要部分来了解NClay.MVC的处理层次和使用规则。

功能概述:

逻辑分析

       这个查询需求主要包括以下几个逻辑:

              所有雇员工查询

    public interface IEmployeesAll

    {

        IList<Employees> Employees

        {

            get;

            set;

        }

    }

              所有客户查询

    public interface ICustomersAll

    {

        IList<Customers> Customers

        {

            get;

            set;

        }

    }

              订单查询

    public interface IOrdersList:NClay.IDataPageProperty

    {

        int EmployeeID

        {

            get;

            set;

        }

        string CustomerID

        {

            get;

            set;

        }

        IList<Orders> Orders

        {

            get;

            set;

        }

        DateTime OrderDateFrom

        {

            get;

            set;

        }

        DateTime OrderDateTo

        {

            get;

            set;

        }

    }

逻辑处理

    [Controller]

    public class Handler

    {

        public void EmployeesAll(IEmployeesAll logic)

        {

            Expression exp &#61; new Expression();

            logic.Employees &#61; exp.List<Employees>();

        }

        public void CustomersAll(ICustomersAll logic)

        {

            Expression exp &#61; new Expression();

            logic.Customers &#61; exp.List<Customers>();

        }

        public void OrderList(IOrdersList logic)

        {

            Expression exp &#61; new Expression();

            if (!Common.IsEmpty(logic.CustomerID))

            {

                exp &&#61; DB.Orders.CustomerID &#61;&#61; logic.CustomerID;

            }

            if (logic.EmployeeID > 0)

            {

                exp &&#61; DB.Orders.EmployeeID &#61;&#61; logic.EmployeeID;

            }

            if (logic.OrderDateFrom !&#61; DateTime.MinValue)

                exp &&#61; DB.Orders.OrderDate >&#61; logic.OrderDateFrom;

            if (logic.OrderDateTo !&#61; DateTime.MinValue)

                exp &&#61; DB.Orders.OrderDate <&#61; logic.OrderDateTo;

            logic.DataPage.PageSize &#61; 10;

            logic.Orders &#61; exp.List<Orders>(logic);

        }

    }

通过框架的Controller属性标记接受框架托管处理。到这里所有逻辑处理的代码已经编写完成。

视图信息对象提供描述

[All(typeof(IEmployeesAll),typeof(ICustomersAll),typeof(IOrdersList))]

    public class OrderList : IEmployeesAll, ICustomersAll, IOrdersList,NClay.Web.IDataPageParamUrl

    {

        #region IOrdersList 成员

 

        public int EmployeeID

        { get; set; }

 

        public string CustomerID

        { get; set; }

 

        public IList<Orders> Orders

        { get; set; }

 

        public DateTime OrderDateFrom

        { get; set; }

 

        public DateTime OrderDateTo

        { get; set; }

 

        #endregion

 

        #region IDataPageProperty 成员

        [Bind(typeof(NClay.DataPage))]

        public IDataPage DataPage

        { get; set; }

 

        #endregion

 

        #region ICustomersAll 成员

 

        public IList<Customers> Customers

        { get; set; }

 

        #endregion

 

        #region IEmployeesAll 成员

 

        public IList<Employees> Employees

        { get; set; }

 

        #endregion

 

        #region IDataPageParamUrl 成员

 

        public string GetParamUrl()

        {

            string param &#61; "EmployeeID&#61;{0}&CustomerID&#61;{1}&OrderDateFrom&#61;{2}&OrderDateTo&#61;{3}";

            return string.Format(param, EmployeeID, CustomerID, OrderDateFrom.ToShortDateString(), OrderDateTo.ToShortDateString());

        }

 

        #endregion

    }

视图的输

 <table cellpadding&#61;"1" cellspacing&#61;"1">

<tr>

                            <td class&#61;"_GridColumn"><a href&#61;"<%WriterDataPageInfo("CustomerID"); %>">CustomerIDa>td>

                                          <td class&#61;"_GridColumn"><a href&#61;"<%WriterDataPageInfo("EmployeeID"); %>">EmployeeIDa>td>

                                          <td class&#61;"_GridColumn">Freighttd>

                                          <td class&#61;"_GridColumn"><a href&#61;"<%WriterDataPageInfo("OrderDate"); %>">OrderDatea>td>

                                          <td class&#61;"_GridColumn">OrderIDtd>

                                          <td class&#61;"_GridColumn">RequiredDatetd>

                                          <td class&#61;"_GridColumn">ShipAddresstd>

                                          <td class&#61;"_GridColumn"><a href&#61;"<%WriterDataPageInfo("ShipCity"); %>">ShipCitya>td>

                                          <td class&#61;"_GridColumn">ShipCountrytd>

                                          <td class&#61;"_GridColumn">ShipNametd>

                                          <td class&#61;"_GridColumn">ShippedDatetd>

                                          <td class&#61;"_GridColumn">ShipPostalCodetd>

                                          <td class&#61;"_GridColumn">ShipRegiontd>

                                          <td class&#61;"_GridColumn">ShipViatd>

              tr>

<%

   

    foreach(NorthWind.Entities.Orders item in orderlist.Orders)

        

{%>

<tr>

              <td class&#61;"_GridItem"><%&#61;item.CustomerID%>td>

              <td class&#61;"_GridItem"><%&#61;item.EmployeeID%>td>

              <td class&#61;"_GridItem"><%&#61;item.Freight%>td>

              <td class&#61;"_GridItem"><%&#61;item.OrderDate.ToShortDateString()%>td>

             <td class&#61;"_GridItem"><%&#61;item.OrderID%>td>

              <td class&#61;"_GridItem"><%&#61;item.RequiredDate.ToShortDateString()%>td>

              <td class&#61;"_GridItem"><%&#61;item.ShipAddress%>td>

              <td class&#61;"_GridItem"><%&#61;item.ShipCity%>td>

              <td class&#61;"_GridItem"><%&#61;item.ShipCountry%>td>

              <td class&#61;"_GridItem"><%&#61;item.ShipName%>td>

              <td class&#61;"_GridItem"><%&#61;item.ShippedDate.ToShortDateString()%>td>

              <td class&#61;"_GridItem"><%&#61;item.ShipPostalCode%>td>

              <td class&#61;"_GridItem"><%&#61;item.ShipRegion%>td>

              <td class&#61;"_GridItem"><%&#61;item.ShipVia%>td>

<%}%>

tr>

table>

下面最重要的一步是如何把视图和视图信息对象关联起&#xff0c;可以在当前WEB应用程序目录下创建vr.xml类型的文件然后在里面写上关系描述

xml version&#61;"1.0" encoding&#61;"utf-8" ?>

<viewrewriter>

  <rewrite url&#61;"~/Orders.aspx" to&#61;"NClayCase.DataList.OrderList"/>

 viewrewriter>

以是上是一个全匹配的关系映射&#xff0c;框架也支持正则匹配的映射描述。

到这里所有工作已经完成。

在线演示

下载代码程序



推荐阅读
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文介绍如何在 Android 中通过代码模拟用户的点击和滑动操作,包括参数说明、事件生成及处理逻辑。详细解析了视图(View)对象、坐标偏移量以及不同类型的滑动方式。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • andr ... [详细]
  • VPX611是北京青翼科技推出的一款采用6U VPX架构的高性能数据存储板。该板卡搭载两片Xilinx Kintex-7系列FPGA作为主控单元,内置RAID控制器,支持多达8个mSATA盘,最大存储容量可达8TB,持续写入带宽高达3.2GB/s。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文讨论了如何根据特定条件动态显示或隐藏文件上传控件中的默认文本(如“未选择文件”)。通过结合CSS和JavaScript,可以实现更灵活的用户界面。 ... [详细]
author-avatar
Ruby
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有