ASP.NET MVC动作结果

在讲述动作结果之前我们先看看ASP.NET WebForms是如何处理响应的:

 

context.Response.Clear();

context.Response.ContentType = "text/json";

context.Response.Write(JsonConvert.SerializeObject(dict));

context.Response.End();

context.Response.Redirect("../Home/Index.html");

context.Response.End();

上述代码返回了一个JSON对象到前台,跳转到首页,这种办法是可行的,但它存在几个问题:

1. 后台要必须包含详细的URL或HTML代码,这让代码难以维护。

2. 将响应直接生成输出,会让测试难以进行,为了确保输出是什么,需要创建Response对象的模仿实现。

 

      幸好MVC的动作结果(Action Result)很好地解决了这个问题。它将“指明意图”和“执行意图”分开。首先MVC不会直接操作Response对象,而是返回一个实现了ActionResult类的对象,它描述控制器响应要完成的功能。例如:重定向,渲染一个视图,返回JSON。。

       当MVC框架从动作结果接收到一个ActionResult对象时,它调用由这个对象所定义的ExecuteResult方法。然后在该动作结果的实现中处理Response对象,生成复合你意图的输出。

 

这是JsonResult的部分底层代码,可以看到最终调用的是Response.write()返回JSON字符串:

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
if (this.MaxJsonLength.HasValue)

 {
          javaScriptSerializer.MaxJsonLength = this.MaxJsonLength.Value;

 }
if (this.RecursionLimit.HasValue)
 {
           javaScriptSerializer.RecursionLimit = this.RecursionLimit.Value;
 }
response.Write(javaScriptSerializer.Serialize(this.Data));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值