ASP.NET MVCの具体的な実装の詳細
3676 ワード
前編でMVC 2を紹介した後、あなたはきっと顧みないと信じて、それでは、いいでしょう、私は認めます......今正式に紹介を始めましょう
まずGlobalからaspx.cs始めましょう.これが伝説のルートルートRouteです.では、まずコードを貼ってください.
そこで、私たちは自分でrouteを書くことができます.例えば
注意しなければならないのは複数のrouteがある場合、特殊なrouteは一般的なrouteの前に置く必要があります.そうしないと、routeは機能しない可能性があります.ルーティングテーブルは一致して検索するため、あなたが書いたrouteの前に同じ一致するrouteがあれば、あなたのrouteは永遠に一致しない可能性があります. controllerおよびActionの定義は必須である、そうでなければ情報は特定のAction処理 を得ることができない.もっと素晴らしい内容はhttp://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx それからhttp://127.0.0.1/の例を引き続き説明するが、上記のrouteを見ると、パラメータが入力されていない場合、デフォルトのcontrollerはHomeであり、ActionはIndexであるため、情報データはHomeControllerに伝達される.csの中のファイルの中のIndex()は処理して、信じませんか?はい、調整してください.次はHomeCotrollerです.cs
ASP.NET MVC 2の処理順序はroutes->controller->action(model)->viewであり、表現形式はGlobalにルーティングテーブルがある.aspx.csでは、Urlを解析した後、専用のControllerの1つのActionにデータを渡して処理し(XXXController.csで)、View(XXXフォルダの下のactionName.aspxで)に戻ります。actionNameはControllerの処理のActionの名前と同じであることが望ましいが、Controllerの前のXXXもXXXフォルダの名前と同じである必要があります。
まずGlobalからaspx.cs始めましょう.これが伝説のルートルートRouteです.では、まずコードを貼ってください.
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
// .axd Route, .axd , * axd
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", //
"{controller}/{action}/{id}", // URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } //
);
}
protected void Application_Start()//Web ~
{
AreaRegistration.RegisterAllAreas();//
RegisterRoutes(RouteTable.Routes);//
}
}
気をつけてMapRouteという関数は、Urlパラメータをそれぞれcontroller、action、idとして解析すると信じられています.例えば、Url:http://127.0.0.1/Home/About/10では、対応するコントローラはホーム、actionはAbout、Iidは10です.そこで、私たちは自分でrouteを書くことができます.例えば
routes.MapRoute(
"History",
"Histroy/{year}/{moonth}/{day}",
new { controller = "Home", action = "Histroy",year= = "years",month = "month",day = "day"}
);
次のリンクにアクセスできます.http://127.0.0.1/History/2011/6/21ということで、ルートはHomeというControllerの中のHistoryというアクションに情報を伝えて処理していきますが、伝わる「日付」は2011年7月22日で、理解?焦らず、まだ話していません.注意しなければならないのは
namespace MvcApplicationTest.Controllers
{
[HandleError]// , ~
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = " ASP.NET MVC!";// , ? ViewData
return View();// view, Home Index.aspx
}
public ActionResult About()
{
return View();
}
}
}
そして、ホームフォルダの下にあるIndexです.aspx<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: ViewData["Message"] %></h2><!-- ,ViewData -->
<p>
ASP.NET MVC , <a href="http://asp.net/mvc" title="ASP.NET MVC ">http://asp.net/mvc</a>。
</p>
</asp:Content>
そして、上のページ処理によりhtmlを生成してクライアントに戻る~