Asp.net MVC Render及Redirect的扩展

这个是Redirect的扩展

namespace System.Web.Mvc
{
    using System;
    /// <summary>
    /// 对Controller的Redirect操作的扩展
    /// blog:http://chsword.cnblogs.com/
    /// </summary>
    public static class RedirectExtension
    {
        /// <summary>
        /// 重定向到上一个Action. 即 header 的 "HTTP_REFERER"  (<c>Context.UrlReferrer</c>).
        /// </summary>
        static public void RedirectToReferrer(this Controller controller) {
            controller.Response.Redirect(controller.Request.ServerVariables["HTTP_REFERER"]);
        }
        [Obsolete("已经过时请使用RedirectToReferrer")]
        static public void RedirectToReferer(this Controller controller)
        {
            RedirectToReferrer(controller);
        }
        /// <summary> 
        /// Redirect 到站点根目录 (<c>Context.ApplicationPath + "/"</c>).
        /// </summary>
        static public void RedirectToSiteRoot(this Controller controller) {
            controller.Response.Redirect(controller.Request.ApplicationPath + "/");
        }

    }
}

Pv3中已经有了,不过void的情况下不支持,还是有其可用性的

namespace System.Web.Mvc
{
    using System;
    using System.Text;
    using System.Web.Script.Serialization;
    using System.Runtime.Serialization.Json;
    /// <summary>
    /// 对RenderView的扩展
    /// blog:http://chsword.cnblogs.com/
    /// </summary>
    static public class RenderExtension
    {
        /// <summary>
        /// 显示要显示的文本
        /// </summary>
        /// <param name="c"></param>
        /// <param name="str">文本内容</param>
        [Obsolete("仅在Asp.net Mvc Preview2中使用,PV3中已经提供新的方法Content")]
        static public void RenderText(this Controller c, string str)
        {
            c.HttpContext.Response.Write(str);
        }
        /// <summary>
        /// 将要显示的对象以JSON返回要客户端
        /// </summary>
        /// <param name="c"></param>
        /// <param name="data">要发送的对象</param>
        [Obsolete("仅在Asp.net Mvc Preview2中使用,PV3中已经提供新的方法Json")]
        public static void RenderJSON(this Controller c, object data)
        {
            c.RenderJSON(data, null);
        }
        /// <summary>
        /// 将要显示的对象以JSON返回要客户端
        /// </summary>
        /// <param name="c"></param>
        /// <param name="data">要发送的对象</param>
        /// <param name="contenttype">传送的Content-Type默认为application/json</param>
        [Obsolete("仅在Asp.net Mvc Preview2中使用,PV3中已经提供新的方法Json")]
        public static void RenderJSON(this Controller c, object data, string contenttype)
        {
            c.RenderJSON(data, contentType, null);
        }
        /// <summary>
        /// 将要显示的对象以JSON返回要客户端
        /// </summary>
        /// <param name="c"></param>
        /// <param name="data">要发送的对象</param>
        /// <param name="contenttype">传送的Content-Type为空则默认为application/json</param>
        /// <param name="encoding">编码方式</param>
        [Obsolete("仅在Asp.net Mvc Preview2中使用,PV3中已经提供新的方法Json")]
        public static void RenderJSON(this Controller c, object data, string contenttype, Encoding encoding)
        {
            HttpResponseBase response = c.HttpContext.Response;
            if (!string.IsNullOrEmpty(contenttype))
            {
                response.ContentType = contenttype;
            }
            else
            {
                response.ContentType = "application/json";
            }
            if (encoding != null)
            {
                response.ContentEncoding = encoding;
            }
            if (data != null)
            {
                            DataContractJsonSerializer sr = new DataContractJsonSerializer(typeof(object));
                sr.WriteObject(response.OutputStream, data);
            }
        }
    }
}

时间: 2024-12-30 22:16:07

Asp.net MVC Render及Redirect的扩展的相关文章

ASP.NET MVC 2的客户端验证扩展

ASP.NET MVC 2内置支持在服务器上验证数据注释验证属性,本文介绍如何使用System.ComponentModel.DataAnnotations中的基础类构建自定义验证属性,关于ASP.NET MVC 2中数据注释是如何工作的,请参考Brad的博客(http://bradwilson.typepad.com/blog/2009/04/dataannotations-and-aspnet-mvc.html). 我会介绍如何连接到ASP.NET MVC 2的客户端验证扩展,以便你可以在客

Asp.net Mvc Framework 十二 Castle扩展

由于Monorail是.net下MVC的先驱所以 Asp.net MVC理所当然要支持老的Castle用户 在Asp.net MVC扩展包中就提供了对Castle的支持与兼容 虽然这个扩展还有很多BUG与不足,但已从其中窥见Asp.net的扩展性之一斑 扩展的下载地址:http://www.codeplex.com/MVCContrib 其中的\Samples\MvcContrib.Samples.NVelocityViewFactory\就是一个Castle使用NVelocity为脚本的示例

ASP.NET MVC之持久化TempData及扩展方法(十三)

前言 之前在开始该系列之前我们就讲述了在MVC中从控制器到视图传递数据的四种方式,但是还是存在一点问题,本节就这个问题进行讲述同时进行一些练习来看看MVC中的扩展方法. 话题 废话不必多说,我们直接进入主题,关于TempData的基本用法就不需要再进行讲述,其生命周期确实很短,但是对于其用法也就存在一定可能性,当我们需要从一个页面到另外一个页面进行数据传递时,此时就需要用到该对象.该对象数据进行第一次加载后则其生命周期结束,但是我们如何做到持久化该对象中的数据呢?请往下看. 持久化TempDat

ASP.NET MVC Framework 系列

序言 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,从前在ASP.NET下我们只能依靠Monorail来实现ASP.NET下无控件的MVC,但是现在ASP.NET 下的MVC已经成为现实. 本文只想让大家更直观地认知ASP.NET MVC,如果语言有所不当,还望大家海涵.当然,如果文中有所纰漏还希望大家及时指出,我也好做及时的修改.在下本着对初学者负责的态度来书写本系列中的各篇文章,但期间的恒心与毅力相信过来的人更加明白,所以如果书写有误希望大家谅解. ASP.NET MVC 正

ASP.NET MVC的View是如何被呈现出来的?[设计篇]

在前面的四篇文章中,我们介绍了各种ActionResult以及相关的请求响应机制,但是与"View的呈现"相关的ActionResult是ViewResult.通过ViewResult的执行实现的对View的呈现比上面我们介绍的各种ActionResult要复杂得多,ASP.NET MVC内部设计了一个扩展的View引擎实现了最终的View呈现工作.[本文已经同步到<How ASP.NET MVC Works?>中] 一.View引擎中的View ASP.NET MVC为我

ASP.NET MVC专题

Asp.net Mvc Framework 十二 Castle扩展 Asp.net Mvc Framework 十一 (自定义Helper在MVC中的使用) Asp.net Mvc Framework 十(测试方法及Filter的示例) Asp.net Mvc Framework 九 (View与Controller交互) Asp.net Mvc Framework 八 (Helper) Asp.net Mvc Framework 七 (Filter及其执行顺序) Asp.net Mvc Fra

ASP.NET MVC加载ASCX后如何为之赋值

Insus.NET有写过一篇<ASP.NET MVC显示UserControl控件(扩展篇)>http://www.cnblogs.com/insus/p/3642634.html ,还没有把此篇写完,就有网友问了,怎样交互.这个交互是指赋值与获取值的问题. 那Insus.NET来演示在ASP.NET MVC加载用户控件(ascx)之后,为ascx内的控件赋值的示例. 为ascx赋值,可以先参考<对用户控件(ascx)属性(property)赋值>http://www.cnblog

ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用

ASP.NET由于采用了管道式设计,具有很好的扩展性,而整个ASP.NET MVC应用框架就是通过扩展ASP.NET实现的.通过上面对ASP.NET管道设计的介绍,我们知道ASP.NET的扩展点只要体现在HttpMoudle和HttpHandler这两个核心组建之上,实际上整个ASP.NET MVC框架就是通过自定义的HttpMoudle(UrlRoutingModule)和HttpHandler(MvcHandler)实现的.为了上读者从整体上把握ASP.NET MVC的工作机制,接下来我按照

ASP.NET MVC Performance Tips(1):RenderPartial性能优化

背景 在ASP.NET MVC中,HtmlHelper的扩展方法RenderPartial为我们使用UserControl带来了 极大的方便,当我们指定一个UserControl时,RenderPartial会在当前View文件夹下查找相应的 UserControl,如果没有找到则会到Shared文件夹下查找.然后在使用RenderPartial方法有一些性能方面 的考虑,值得我们去关注. 设想有这样一个场景,一篇文章有很多个评论,在页面中我们需要呈 现出一个评论列表,自然我们会定义一个评论的U