zoukankan      html  css  js  c++  java
  • ASP.NET MVC ajax处理 AjaxResult

    1、统一ASPNET MVC 对ajax请求响应格式定义,方便前端统一处理ajax结果.

      1)定义程序返回结果数据格式

     1 /// <summary>
     2     /// 执行结果
     3     /// </summary>
     4     /// <typeparam name="T"></typeparam>
     5     public class RunResult<T>
     6     {
     7         /// <summary>
     8         /// 操作状态
     9         /// </summary>
    10         public ResultStatus Status { get; set; }
    11         /// <summary>
    12         /// 操作异常
    13         /// </summary>
    14         public Exception Exception { get; set; }
    15         /// <summary>
    16         /// 数据结果
    17         /// </summary>
    18         public T Result { get; set; }
    19         /// <summary>
    20         /// 操作消息
    21         /// </summary>
    22         public string Message { get; set; }
    23     }
    View Code

      2)定义执行结果状态

    /// <summary>
        /// 执行结果
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class RunResult<T>
        {
            /// <summary>
            /// 操作状态
            /// </summary>
            public ResultStatus Status { get; set; }
            /// <summary>
            /// 操作异常
            /// </summary>
            public Exception Exception { get; set; }
            /// <summary>
            /// 数据结果
            /// </summary>
            public T Result { get; set; }
            /// <summary>
            /// 操作消息
            /// </summary>
            public string Message { get; set; }
        }
    View Code

       3)返回前端数据格式

      public class AjaxEntity<T>
        {
            [JsonProperty(PropertyName = "Success")]
            public bool Success { get; set; }
    
            [JsonProperty(PropertyName = "Message")]
            public string Message { get; set; }
    
            [JsonProperty(PropertyName = "Data")]
            public T Data { get; set; }
        }
    View Code

      4)定义asp.net mvc 中 ajax ActionResult

     public class AjaxResult<T> : CustomResult<AjaxEntity<T>>
        {
            private readonly RunResult<T> _runResult;
    
            public AjaxResult(RunResult<T> runResult)
            {
                _runResult = runResult;
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <returns></returns>
            public override AjaxEntity<T> GetObject()
            {
                AjaxEntity<T> entity = new AjaxEntity<T> { Data = _runResult.Result };
                if (_runResult.Result is bool)
                {
                    entity.Success = _runResult.Status == ResultStatus.Success && Convert.ToBoolean(_runResult.Result);
                }
                else
                {
                    entity.Success = _runResult.Status == ResultStatus.Success;
                }
                entity.Data = _runResult.Result;
                entity.Message = _runResult.Message;
                return entity;
            }
        }
    View Code
  • 相关阅读:
    flash/flex builder在IE中stage.stageWidth始终为0的解决办法
    “AS3.0高级动画编程”学习:第一章高级碰撞检测
    Flash/Flex学习笔记(57):实用技巧
    Flash/Flex学习笔记(56):矩阵变换
    flash开发中如何实现界面代码分离
    [转]Flash开发技能树
    flash builder代码格式化以及其它快捷键
    中小型商城系统中的分类/产品属性/扩展属性的数据库设计
    “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (下)
    晒晒这两天做的播放器
  • 原文地址:https://www.cnblogs.com/zhongkai/p/4033506.html
Copyright © 2011-2022 走看看