Asp.Net MVCのControllers
7476 ワード
次はControllerの定義です.
一、Actionにおけるreturn View()の理解
つまりActionResultです.ここでreturn View()はhtml形式の内容を返してページに表示しますが、ActionResultには多くのタイプがあります.
・View()-ViewResultを返します.
・PartialView()-PartialViewResultを返します.
・RedirectToAction()–RedirectToRouteResultを返します.
・Redirect()-RedirectResultを返します.
・Content()-ContentResultを返します.
・Json()-JsonResultを返します.
・File()-FileResultを返します.
・JavaScript()-JavaScriptResultを返します.
・RedirectToRoute()-RedirectToRouteResultを返します.
説明:
・View Result–通常のASPを表す.NET MVC view.
・PartialViewResult–ASPを表すNET MVC viewの一コマ.
・RedirectResult–別のコントロールアクションまたはURLにリダイレクトすることを示す.
・ContentResult–ブラウザに基本的なタイプのコンテンツを送信することを示す.Netの基本的なタイプは、string、int、doubleなどです.
・JsonResult–ブラウザにJsonタイプを返します
・FileResult–ダウンロード用のファイルを返します.
・EmptyResult–アクションが結果を返さない
・HttpUnauthorizedResult–HTTP Unauthorized status codeを返します.
・JavaScriptResult–JavaScriptファイルを返します.
・RedirectToRouteResult–route valuesを使用して別のコントローラのactionにリダイレクト
二、アクションが呼び出されるのをどのように制御するか
1.AcceptVerbsの使用
コードを見てください:
GetかPostかを制御するときにCreateというアクションをトリガーします
httpでサポートされているアクションのタイプ:
· OPTIONS – Returns information about the communication options available.
· GET – Returns whatever information is identified by the request.
· HEAD – Performs the same operation as GET without returning the message body.
· POST – Posts new information or updates existing information.
· PUT – Posts new information or updates existing information.
· DELETE – Deletes information.
· TRACE – Performs a message loop back.
· CONNECT – Used for SSL tunneling.
2.ActionNameの使用
3.ActionMethodSelectorの使用
Controllerのコード:
HandleUnkonwnActionを使用すると、デフォルトでは404 Resource Not Foundの例外が返され、定義を再ロードできます.
public class ProductController : Controller
{
//
// GET: /Product/
public ActionResult Index()
{
return View();
}
public ActionResult Help()
{
return View();
}
public ActionResult Details(int Id)
{
return View();
}
}
一、Actionにおけるreturn View()の理解
つまりActionResultです.ここでreturn View()はhtml形式の内容を返してページに表示しますが、ActionResultには多くのタイプがあります.
・View()-ViewResultを返します.
・PartialView()-PartialViewResultを返します.
・RedirectToAction()–RedirectToRouteResultを返します.
・Redirect()-RedirectResultを返します.
・Content()-ContentResultを返します.
・Json()-JsonResultを返します.
・File()-FileResultを返します.
・JavaScript()-JavaScriptResultを返します.
・RedirectToRoute()-RedirectToRouteResultを返します.
説明:
・View Result–通常のASPを表す.NET MVC view.
・PartialViewResult–ASPを表すNET MVC viewの一コマ.
・RedirectResult–別のコントロールアクションまたはURLにリダイレクトすることを示す.
return RedirectToAction("Index");
return RedirectToAction(“Index”, “Product”);
return RedirectToAction(“Details”, new {id=53});
・ContentResult–ブラウザに基本的なタイプのコンテンツを送信することを示す.Netの基本的なタイプは、string、int、doubleなどです.
public string SayHello()
{
return "Hello";
}
・JsonResult–ブラウザにJsonタイプを返します
public ActionResult List()
{
var quotes = new List<string>
{
"Look before you leap",
"The early bird gets the worm",
"All hat, no cattle"
};
return Json(quotes);
}
・FileResult–ダウンロード用のファイルを返します.
public ActionResult Download()
{
return File("~/Content/CompanyPlans.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "CompanyPlans.docx");
}
・EmptyResult–アクションが結果を返さない
・HttpUnauthorizedResult–HTTP Unauthorized status codeを返します.
・JavaScriptResult–JavaScriptファイルを返します.
・RedirectToRouteResult–route valuesを使用して別のコントローラのactionにリダイレクト
二、アクションが呼び出されるのをどのように制御するか
1.AcceptVerbsの使用
コードを見てください:
// GET: /Employee/Create
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
return View();
}
// POST: /Employee/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Employee employeeToCreate)
{
try
{
_repository.InsertEmployee(employeeToCreate);
return RedirectToAction("Index");
}
catch
{
return View();
}
}
// DELETE: /Employee/Delete/1
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult Delete(int id)
{
_repository.DeleteEmployee(id);
return Json(true);
}
GetかPostかを制御するときにCreateというアクションをトリガーします
httpでサポートされているアクションのタイプ:
· OPTIONS – Returns information about the communication options available.
· GET – Returns whatever information is identified by the request.
· HEAD – Performs the same operation as GET without returning the message body.
· POST – Posts new information or updates existing information.
· PUT – Posts new information or updates existing information.
· DELETE – Deletes information.
· TRACE – Performs a message loop back.
· CONNECT – Used for SSL tunneling.
2.ActionNameの使用
[ActionName("Edit")]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit_GET(Merchandise merchandiseToEdit)
{
return View(merchandiseToEdit);
}
3.ActionMethodSelectorの使用
namespace MvcApplication1.Selectors
{
public class AjaxMethod : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
}
Controllerのコード:
[AjaxMethod]
[ActionName("Index")]
public string Index_AJAX()
{
var selectedIndex = _rnd.Next(_news.Count);
return _news[selectedIndex];
}
、 : Action
public class CatalogController : Controller
{
public ActionResult Create()
{
return View();
}
public ActionResult Delete(int id)
{
return View();
}
protected override void HandleUnknownAction(string actionName)
{
ViewData["actionName"] = actionName;
View("Unknown").ExecuteResult(this.ControllerContext);
}
}
HandleUnkonwnActionを使用すると、デフォルトでは404 Resource Not Foundの例外が返され、定義を再ロードできます.