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

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

 /// <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; }
}

  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; }
}

   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; }
}

  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;
}
}

ASP.NET MVC ajax处理 AjaxResult的更多相关文章

  1. ASP.NET MVC Ajax.ActionLink 简单用法

    ASP.NET MVC 项目中,如何使用类似于 iframe 的效果呢?或者说 Ajax 局部刷新,比如下面操作: 我们想要的效果是,点击 About 链接,页面不刷新(地址栏不变),然后下面的内容进 ...

  2. Asp.Net MVC ajax调用 .net 类库问题

    如果你还在为 ajax 调用 .net 类库还束手无策的话,相信这篇博客将帮助你解决这个世纪问题! 因为Visual Studio 内置了asp.net mvc ,不过当你添加asp.net mvc项 ...

  3. Asp.Net MVC Ajax

    将ASP.NET MVC中的form提交改为ajax提交 在ASP.NET MVC视图中通过 @using (Html.BeginForm()) 产生的是form表单提交代码,可以用javascrip ...

  4. ASP.NET MVC Ajax 伪造请求

    1.前言 CSRF(Cross-site request forgery)跨站请求伪造,ASP.NET MVC 应用通过使用AJAX请求来提升用户体验,浏览器开发者工具可以一览众山小,就很容易伪造了请 ...

  5. ASP.NET MVC AJAX 请求中加入 antiforgerytoken 解决“所需的防伪表单字段“__RequestVerificationToken”不存在”问题

    在ASP.NET mvc中如果在表中使用了@Html.AntiForgeryToken(),ajax post不会请求成功 解决方法是在ajax中加入__RequestVerificationToke ...

  6. ASP.NET MVC AJAX的调用示例

    @{ ViewBag.Title = "Home Page"; //下面引用Jquery和unobtrusive-ajax } @Scripts.Render("~/bu ...

  7. asp.net mvc ajax 异步刷新例子

    这几天在asp.net中使用ajax来做异步刷新,这里整理一下 1.首先看前台页面点击的时候调用函数 function shuxin() { $.ajax( { url: "GetValue ...

  8. asp.net MVC  Ajax.BeginForm 异步上传图片的问题

    当debug到这里,你们就发现不管是 Request.Files["Upload"]亦或 Request.Files[0] 都不会取到文件流. 这就是我要说的,当使用Ajax.Be ...

  9. Asp.net Mvc Ajax.BeginForm提交表单

    之前Mvc中一直用Html.BeginForm提交表单,即如下: @using (Html.BeginForm("Add", "News", FormMetho ...

随机推荐

  1. EMC ViPR all in one page

    EMC ViPR 2.0 Product Documentation Index https://community.emc.com/docs/DOC-35557

  2. OpenGL使用libPng读取png图片

    #include<stdarg.h> #include<png.h> #include<glut.h> #include<math.h> #includ ...

  3. ItemsControl

    <ItemsControl Grid.Row=" ItemsSource="{Binding Content.patientInfoList}" Width=&qu ...

  4. nginx rewrite only specific servername to https

    需求: 把某个域名的80端口服务  ----> 重定向转到 这个域名的 443端口的服务.   server { listen 80; server_name xxx.abcd.com.cn; ...

  5. 你使用 Web 平台安装程序命令行工具

    你使用 Web 平台安装程序命令行工具 获取的软件由其所有者授权给你.Microsoft 未授予你第三方软件的任何权利.已成功加载主源: https://go.microsoft.com/?linki ...

  6. PHP OAuth 2.0 Server

    PHP OAuth 2.0 Server PHP OAuth 2.0 Server ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ ...

  7. new/malloc的差别

    1. malloc()函数 1.1 malloc的全称是memory allocation.中文叫动态内存分配. 原型:extern void *malloc(unsigned int num_byt ...

  8. OSX: SSH密钥使用日记(2)

    准备钥匙和锁(密钥对): $ pwd /Users/test $ ssh-keygen -t dsa -C "$(whoami)@$(hostname),$(date '+%F %T')&q ...

  9. PyQt5教程——对话框(6)

    PyQt5中的对话框 对话框窗口或对话框是大多数主流GUI应用不可缺少的部分.对话是两个或更多人之间的会话.在计算机应用中,对话框是一个用来和应用对话的窗口.对话框可以用来输入数据,修改数据,改变应用 ...

  10. PHPstorm自定义快捷键

    Ctrl+alt+S 打开设置 PHPstorm 设置 PHPstorm 主题安装 自定义快捷键设置 ·全屏 F11 ·另外一种全屏alt+F11 Database数据库管理 alt+d Termin ...