Archive for 2011年2月6日

ASP.NET MVC でパラメータを渡す方法

2011年2月6日

 

Global.asax.cs でパラメータを3つ設定

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);

    routes.MapRoute(
        “Default”, // ルート名
        “{controller}/{action}/{p1}/{p2}/{p3}”, // パラメーター付きの URL
        new { controller = “Home”, action = “Index”,
              P1 = UrlParameter.Optional,
              P2 = UrlParameter.Optional,
              P3 = UrlParameter.Optional
        } // パラメーターの既定値
    );

}

HomeController.cs で、パラメータをViewData にセット。このとき、UrlParameter.Optional としているので、int, float はそれぞれ nullable にしておかないとエラーになる。

public ActionResult Index(string p1, int? p2, float? p3)
{
    ViewBag.Message = “ASP.NET MVC へようこそ”;
    ViewData[“p1”] = p1;
    ViewData[“p2”] = p2;
    ViewData[“p3”] = p3;
    return View();
}

index.cshtmlで、

    <p>p1 = @ViewData[“p1”]</p>
    <p>p2 = @ViewData[“p2”]</p>
    <p>p3 = @ViewData[“p3”]</p>

とする。

次のULRでの文字列、int, float も正しい型で処理されている。

http://…/Home/Index/文字列/123/3.1419e-3

image

広告

ASP.NET MVC ActionResultの派生型

2011年2月6日

http://msdn.microsoft.com/ja-jp/magazine/dd695917.aspx

「ASP.NET MVC Controller の動作」より、ActionResult のディライブドクラスを抜き出したもの。

名前 フレームワークの動作 生成メソッド
ContentResult 文字列値を HTTP 応答に直接書き込みます。 Content
EmptyResult HTTP 応答に書き込みません。  
FileContentResult ファイルの内容 (バイトの配列として表される) を取得し、HTTP 応答に書き込みます。 File
FilePathResult 指定した場所にあるファイルの内容を取得し、HTTP 応答に書き込みます。 File
FileStreamResult コントローラによって生成されたファイル ストリームを取得し、HTTP 応答に書き込みます。 File
HttpUnauthorizedResult 承認チェックが失敗したときに承認フィルタによって使用される特殊な= 結果です。  
JavaScriptResult クライアントが実行するスクリプトをクライアントに返します。 JavaScript
JsonResult JavaScript Object Notation (JSON) のデータをクライアントに返します。 Json
RedirectResult クライアントを新しい URL にリダイレクトします。 Redirect
RedirectToRouteResult 指定されたビューをレンダリングして HTML フラグメントを返します (通常は AJAX のシナリオで使用されます)。 RedirectToRoute / RedirectToAction
PartialViewResult 指定されたビューをレンダリングして HTML フラグメントを返します (通常は AJAX のシナリオで使用されます)。 PartialView
ViewResult 指定されたビューをレンダリングして HTML をクライアントに返します。 View