Asp.NetMVCにおけるController戻り値タイプ
7333 ワード
Asp.NetMVCにおけるController戻り値タイプ
mvcのすべてのcontrollerクラスでは、Controller接尾辞を使用して名前を付け、Actionにも一定の要件があります.
ASP.NET MVCには、一般的なタスクを実行するActionResultタイプ、アクション結果のタイプ、およびその説明が含まれています.
アクション結果のタイプ
はっきり言う
EmptyResult
空の値または空の応答を表します.何もしない
ContentResult
指定した内容をテキストとして直接応答に書き込む
JsonResult
JSONに提供されたオブジェクトをシリアル化し、JSONを応答に書き込む
RedirectResult
ユーザーを指定されたURLに再配向
RedirectToRouteResult
ルート選択パラメータで指定したURLにユーザを再配向する
ViewResult
ビューエンジンを呼び出して応答にビューを表示
PartialViewResult
ViewResultと同様に、応答にローカルビューが表示されない場合を除き、AJAXリクエストに応答するのが一般的です.
FileResult
結果のセットのベースクラスとして使用され、バイナリの応答がストリームに記述されます.これは、ファイルをユーザーに返すのに役立ちます.
FilePathResult
FileResultから継承して戻り、ファイルパスベースの応答にファイルを書き込みます.
FileContentResult
FileResultから継承して戻り、1バイトの配列を応答に書き込む
FileStreamResult
FileResultから継承して戻り、応答にストリームを書き込みます.
JavaScriptResult
クライアント上でサーバからのJavaScriptコードをすぐに実行する
次のようになります.
// ActionResult
public ActionResult HelloWorld()
{
ViewData["Message"] = "Hello World!";
return View();
}
以下、Aspを挙げる.NetMVCにおけるControllerにおけるActionResult戻りタイプ1、View Resultビュー結果を返し、Webページに表示する public ActionResult About()
{
return View(); // model
}
2、PartialViewResultの一部ビューの結果を返し、主に一部ビューの内容を返してView/Sharedディレクトリの下でViewUserControlを作成する.cshtml部分ビュー public ActionResult UserControl()
{
ViewBag.Message = " ";
return PartialView("ViewUserControl");
}
ページ呼び出し@ViewBag.Messageは「部分ビュー」を出力します3、ContentResultユーザー定義の内容タイプを返す
public ActionResult Content()
{
return Content("Test Content", "text/html"); //
}
ページ出力「Test Content」このタイプはajax操作で返すテキストの内容に使用されることが多い // GET: Ajax
public ActionResult Index()
{
//return View();
return Content("alert(' '); ");
}
5.JavaScriptResultがクライアントで実行できるスクリプトを返す
public ActionResult JavaScript()
{
string str = string.Format("alter('{0}');", " ");
return JavaScript(str);
}
ただし、ここではポップアップウィンドウに直接応答するわけではありません.ページでもう一度呼び出す必要があります.これは異なる論理に基づいて異なるjs操作を容易に実行することができる.6、FileResult書き込み応答のバイナリ出力を返し、簡単にダウンロードする機能として一般的に使用できる
public ActionResult File()
{
string fileName = "~/Content/test.zip"; //
string downFileName = " .zip"; //
return File(fileName, "application/octet-stream", downFileName);
}
直接testをダウンロードします.zip後にローカルに保存すると「ファイル表示名.zip」7、NullまたはVoidデータ型のEmptyResultを返す
public ActionResult Empty()
{
return null;
}
NULLを返します8、リダイレクト方法:Redirect/RedirectToAction/RedirectToRoute Redirect:指定したurlアドレスに直接移動する
public ActionResult Redirect()
{
// url
return Redirect("http://www.baidu.com");
}
RedirectToAction:ActionNameを直接使用してジャンプするか、ControllerNameを追加できます. public ActionResult RedirectResult()
{
return RedirectToAction("Index", "Home", new { id = "100", name = "liu" });
}
パラメータRedirectToRoute:ルーティングを指定してジャンプすることもできます public ActionResult RedirectRouteResult()
{
return RedirectToRoute("Default", new { controller = "Home", action = "Index" });
}
Defaultはglobal.asax.csで定義されたルーティング名
ASP.NET MVCのController受信入力詳細
ASP.NET mvcのControllerは、ユーザーからの要求に正しく応答するには、ユーザーが入力した値と伝達したパラメータ情報、例えば、パラメータの値をクエリーしたり、提出したフォームの値や、ルーティングシステムを通じてURLから取得した値などを取得します.ASP.NET MVCには、これらの値にアクセスするための3つの方法があります.
1、Controllerのコンテキストから取得する
2、Actionパラメータから取得
3、ASPを利用する.NET MVCのモデルバインド特性
以下、上記の3つの方法について紹介します.
一、コントローラのコンテキストオブジェクトからパラメータ値を取得する
作成したControllerがベースクラスのControllerから継承されると、Controllerのコンテキストからパラメータ情報を取得できます.ベースクラスのControllerでは、Request、Response、RouteData、HttpContext、and Serverなど、さまざまな情報を提供しています.これらのオブジェクトを使用すると、現在要求されている関連変数の値を取得できます.
たとえば、次のアクション方法があります. public ActionResult RenameProduct()
{
//
string userName = User.Identity.Name;
string serverName = Server.MachineName;
string clientIP = Request.UserHostAddress;
DateTime dateStamp = HttpContext.Timestamp;
AuditRequest(userName, serverName, clientIP, dateStamp, "Renaming product");
//
string oldProductName = Request.Form["OldName"];
string newProductName = Request.Form["NewName"];
bool result = AttemptProductRename(oldProductName, newProductName);
ViewData["RenameResult"] = result;
return View("ProductRenamed");
}
二、Actionパラメータからパラメータ値を取得する
ControllerのActionメソッドには、パラメータ、ASPを付けることができます.NET MVCフレームワークでは、要求されたコンテキストからこれらのパラメータの値がアクションのパラメータにそれぞれ対応するように自動的に抽出されます.これも可読性が最もよく、最も紹介されている方法です.
以前は、次のオブジェクトを要求することによってパラメータの値を取得していたとします. public ActionResult ShowWeatherForecast()
{
string city = (string)RouteData.Values["city"];
DateTime forDate = DateTime.Parse(Request.Form["forDate"]);
// ... implement weather forecast here ...
return View();
}
次に、Actionパラメータを使用して、上記を改善することができます. public ActionResult ShowWeatherForecast(string city, DateTime forDate)
{
// ... implement weather forecast here ...
return View();
}
Actionパラメータを用いることでコード量が大幅に減少し,可読性が向上することが分かる.パラメータの形式を使用する利点は、RouteDataオブジェクトとRequestオブジェクトを作成する必要がなく、対応するパラメータを直接渡すことでテストできるため、ユニットテストに有利です.MVCフレームワークは、要求コンテキストオブジェクトをチェックすることによって、これらのパラメータに値を提供し、以下のセットを含む.
Request.QueryString,
Request.Form ,
RouteData.Values
注意:Actionパラメータは大文字と小文字を区別しません.例えば、Actionにはcityというパラメータがあります.Requestを通過することができます.Form[City]は値を取得します.
三、ASPを利用する.NET MVCのモデルバインド特性取得パラメータ値
ベースクラスControllerがアクションパラメータを設定する値は、MVCフレームワークのvalue providersとmodel bindersの2つのコンポーネントによって行われます.MVCフレームに内蔵されたvalue providersは、集合から、Request.Form, Request.QueryString, Request.FilesとRouteDataValuesは値を取得し、model bindersに渡してそれぞれ私たちのActionに対応するパラメータにマッピングします.デフォルトのmodel bindersは任意にマッピングできます.基本タイプ、集合タイプ、カスタムクラスを含むNETタイプのパラメータ.私が前に書いたASPを見てもいいです.NET MVCにおけるデフォルトModel BinderバインドActionパラメータがList、Dictionaryなどの集合の例については、後で詳しく説明するASP.NET MVCのモデルバインド特性.
public ActionResult RenameProduct()
{
//
string userName = User.Identity.Name;
string serverName = Server.MachineName;
string clientIP = Request.UserHostAddress;
DateTime dateStamp = HttpContext.Timestamp;
AuditRequest(userName, serverName, clientIP, dateStamp, "Renaming product");
//
string oldProductName = Request.Form["OldName"];
string newProductName = Request.Form["NewName"];
bool result = AttemptProductRename(oldProductName, newProductName);
ViewData["RenameResult"] = result;
return View("ProductRenamed");
}
public ActionResult ShowWeatherForecast()
{
string city = (string)RouteData.Values["city"];
DateTime forDate = DateTime.Parse(Request.Form["forDate"]);
// ... implement weather forecast here ...
return View();
}
public ActionResult ShowWeatherForecast(string city, DateTime forDate)
{
// ... implement weather forecast here ...
return View();
}