メインメニューを開く

差分

RedirectResult クラス (System.Web.Mvc)

1,085 バイト追加, 2012年7月11日 (水) 10:35
RedirectResultクラスとは、[[ASP.NET MVC]]の[[アクション・メソッド]]の戻り値([[ActionResultクラス]]およびその派生クラス)として、[[Webブラウザ]]に対して指定されたURIにリダイレクトするよう指示するHTTPレスポンスヘッダーを生成、送信するクラスである。に対して指定された[[URI]]に[[リダイレクト]]するよう指示するHTTPレスポンスヘッダーを生成、送信する[[クラス]]である。
== 使い方 ==
RedirectResultクラスの使い方はいたって簡単。
単純にリダイレクト先のURLを指定するだけである。単純に[[リダイレクト]]先の[[URL]]を指定するだけである。これでWebブラウザに対してこれで[[Webブラウザ]]に対して[[302リダイレクト]]を送信する。
<source lang="csharp">
using System.Web.Mvc;
=== 301リダイレクト ===
[[ASP.NET MVC 3]]では、bool型のPermanentプロパティが追加され、永続的に移転したことを示す永久リダイレクト(では、[[bool型]]のPermanentという[[プロパティ]]が追加され、永続的に移転したことを示す永久リダイレクト([[301リダイレクト]])を発生させるかを指定できるようになった。)を発生させるかを指定できるようになった。Permanentプロパティの値はRedirectResultクラスの[[コンストラクタ]]の2番目の[[引数]]として指定することもできる。
なお、[[ASP.NET MVC 3]]で追加されたものであり[[ASP.NET MVC 2]]以前では存在しないので注意。
public ActionResult Index()
{
// コンストラクタの第2引数にbool型が追加され、trueにすると301リダイレクトになる。ASP.NET MVC 3でコンストラクタに第2引数(bool型)が追加され、 // trueにすると301リダイレクトになる。
return new RedirectResult( "http://monobook.org/wiki/PHP", true );
}
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://monobook.org/wiki/PHP" );
</source>
 
[[ASP.NET MVC 2]]以前で[[301リダイレクト]]をしたい場合は[[ActionResultクラス]]を[[継承]]した自前クラスを作る。
<source lang="csharp">
using System.Web.Mvc;
 
public class PermanentRedirectResult : ActionResult
{
public string Url { get; set; }
 
public PermanentRedirectResult(string url)
{
this.Url = url;
}
 
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
if (string.IsNullOrEmpty(this.Url))
{
throw new ArgumentException("url is null or empty", "Url");
}
 
context.HttpContext.Response.StatusCode = 301;
context.HttpContext.Response.RedirectLocation = this.Url;
context.HttpContext.Response.End();
}
}
</source>
匿名利用者