Mvc重写JsonResult
用了mvc有一段时间了,慢慢的熟悉起来了,也渐渐的发现了mvc的一些缺点,比如当我们返回 Json(new{})的时候没办法做到将首字母转换成小写、日期再序列化过后是时间戳需要到前台重新处理或者提在在对象中处理,这些都很不方便,用起来相当不舒服,所有在参考了一些其他的资料以后就重写了这个json序列化的方法。全程没什么难点,和自身序列化不同的地方在于放弃了微软自带的json序列化方法而该用了第三方的json.net的序列化框架。下面就是实现过程。
1.新建一个类CustomesJsonResult 继承自mvc自带的JsonResult,重写它的ExecuteResult方法。
public class CustomsJsonResult : JsonResult
{
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
var response = context.HttpContext.Response;
response.ContentType = !string.IsNullOrEmpty(ContentType) ? ContentType : "application/json";
if (ContentEncoding != null)
{
response.ContentEncoding = ContentEncoding;
}
var jsonSerizlizerSetting = new JsonSerializerSettings();
//设置取消循环引用
jsonSerizlizerSetting.MissingMemberHandling = MissingMemberHandling.Ignore;
//设置首字母小写
jsonSerizlizerSetting.ContractResolver = new CamelCasePropertyNamesContractResolver();
//设置日期的格式为:yyyy-MM-dd
jsonSerizlizerSetting.DateFormatString = "yyy-MM-dd";
var json = JsonConvert.SerializeObject(Data, Formatting.None, jsonSerizlizerSetting);
response.Write(json);
}
}
至此整个重写已经完成(当然了你可以随意添加自己的设置根据自己需求),剩下就是怎么使用了:
1.我们需要新建一个BaseController并继承自Controller类。如下:
public class BaseAdminController : Controller
{
protected override JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior)
{
return new CustomsJsonResult { Data = data, ContentType = contentType, ContentEncoding = contentEncoding, JsonRequestBehavior = behavior };
} }
至此整个重写和使用已经完成了,后面我们只需要在新建控制器的时候继承自BaseController就可以了,当我们返回josn的时候就能看到们想要的结果。
网上类似的例子很多,我也参考了其它很多自恋,在此就不一一例举了。
Mvc重写JsonResult的更多相关文章
- asp.net mvc自定义JsonResult类来防止MaxJsonLength超过限制
前不久在做一个项目的时候,我用到了mvc的webapi返回了一个大数据,结果报了500错误,如下图所示: Server Error in ‘/’ Application. Error during s ...
- mvc使用JsonResult返回Json数据
mvc使用JsonResult返回Json数据 controller 中定义以下方法: public JsonResult UpdateSingle(int id, string actionNa ...
- 【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾
在搜索引擎优化领域,静态网页对于SEO的优化有着很大的好处,因此很多人就想把自己的网站的一些网页做成伪静态.我们现在在网络上发现很多博客网站.论坛网站.CMS内容管理系统等都有使用伪静态这一种情况,伪 ...
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
问题背景: 在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符 ...
- 关于ASP.NET MVC 中JsonResult返回的日期值问题
最近开始用MVC做项目,在使用 JsonResult返回数据的时候,日期被反射成了/Date 1233455这种格式,遍查网上都是在客户端使用JS来处理这个问题的,这样的话,就需要在每一个涉及到日期的 ...
- ASP.NET MVC之JsonResult(六)
前言 这一节我们利用上节所讲Unobtrusive Ajax并利用MVC中的JsonResult来返回Json数据. JsonResult 上节我们利用分部视图返回数据并进行填充,当我们发出请求需要获 ...
- MVC 下 JsonResult 的使用方法(JsonRequestBehavior.AllowGet)【转】
MVC 默认 Request 方式为Get. actionpublic JsonResult GetPersonInfo(){var person = new{Name = "张三" ...
- MVC重写DefaultModelBinder实现自定义模型绑定
在编写前台页面的时候为了使url传递参数的简短,比如personId="1" 我们通过url传递成pid=1 那么在后台action方法接受的模型Person类 的属性为per ...
- MVC的JsonResult用法
在Asp.net Mvc 2中由于对数据的保护,默认情况下request为post,所以在前端请求的时候则需要以post方式request action方法: public JsonResult Ge ...
随机推荐
- LeetCode: 455 Assign Cookies(easy)
题目: Assume you are an awesome parent and want to give your children some cookies. But, you should gi ...
- MCP|LQD|Data-independent acquisition improves quantitative cross-linking mass spectrometry (DIA方法可提升交联质谱定量分析)
文献名:Data-independent acquisition improves quantitative cross-linking mass spectrometry (DIA方法可提升定量交联 ...
- Python中list作为默认参数的陷阱
在Python中,作为默认参数的一定要是不可变对象,如果是可变对象,就会出现问题,稍不注意,就会调入陷阱,尤其是初学者,比如我(┬_┬). 我们来看一个例子. def add(L=[]): L.app ...
- nexus私服的搭建和使用
- rem字体在rem盒子里面不一样,或者不同的行解决
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 返回top写法技巧
HTML<a href="#" class="fixed">top</a> CSS: .fixed{ padding: 20px 15p ...
- vue中点击空白处隐藏弹框(用指令优雅地实现)
在写vue的项目的时候,弹框经常性出现,并要求点击弹框外面,关闭弹框,那么如何实现呢?且听我一一...不了,能实现效果就好 <template> <div> <div c ...
- python实现王者荣耀英图片收集
一个python写的小爬虫项目,爬虫相关的很容易写,关键是怎么找到爬取图片的位置. 图片位置分析 hero_list_url = 'http://pvp.qq.com/web201605/js/her ...
- Linux 查询服务器序列号命令
1.查看服务器型号:dmidecode | grep 'Product Name' 2.查看主板的序列号:dmidecode |grep 'Serial Number' 3.查看系统序列号:dmi ...
- Active Domain中的用户属性
/// <summary> /// AD中的属性,没有出现的后续接着补充 /// </summary> public class LdapUserEntryProperty { ...