簡単なmvcの1つ:簡単な始まり

7325 ワード

mvcは今まで勉強して、相対的に学んだ一連の知識をまとめて、そこでこのタイトル-簡単なmvcがありました.文は名の通り、簡単なmvcの知識が書かれており、目標群も言うまでもない.この記事は簡単に始まり、hello worldのようなwebプロジェクトを最初から構築します.
  asp.Netプロジェクトのリクエスト処理の核心はIHttpHandlerであり,前のPageでも後のMVCでもある.だから最も簡単なwebプロジェクトは、IHttpHandlerのプロジェクトが1つしかありません.プロジェクトには2つのファイルしかありません.1つです.ashxファイル、内容:
<%@ WebHandler Class="Danyuers.SimpleMvc.Hello" Language="C#" %>

もう1つは、対応するコードファイルです.Helloというクラス、つまり上のClass属性が指すカテゴリを作成します.コードは次のとおりです.
namespace Danyuers.SimpleMvc {
    public class Hello : IHttpHandler {
        public bool IsReusable {
            get { return false; }
        }

        public void ProcessRequest(HttpContext context) {
            context.Response.Write("<h1>hello world!</h1>");
            context.Response.End();
        }
    }
}

次にコンパイル(コンパイル先ファイルをbinに変更してください)し、localhost:xxxx/xxを介して仮想ディレクトリにマッピングします.ashxは、作成されたプロジェクトにアクセスできます.対応するリファレンス(system.web)を追加してください.
はい、簡単なプロジェクトの構築はすでに完成しましたが、これは本当のmvcではありません.mvcの最も直感的な表現はルーティングマッピングで、webformのファイルマッピングとは違います.簡単なmvcプロジェクトにはどんなものが必要ですか?第一にglobal.asaxファイル、HttpApplicationにナビゲートします.第二に、ルーティングマッピングテーブル、ルーティングを定義する.第三に、ルーティングマッピングオブジェクト、すなわちコントローラである.上のashxのようにglobal.asaxも1行の命令を含むだけです.
<%@ Application Codebehind="Global.cs" Inherits="Danyuers.SimpleMvc.MvcApplication" Language="C#" %>

同じようにglobalを構築しますcsは、SimpleMvcApplicationを確立し、コードは以下の通りである.
using System;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace Danyuers.SimpleMvc{
    public class MvcApplication : HttpApplication {
        protected void Application_Start() {
            RouteRegister.Regist(RouteTable.Routes);
        }
    }
}

ルーティングマッピングが定義されているRouteRegisterに注意してください.別のコードファイルを作成するcs、コードは以下の通りです.
using System;
using System.Web.Mvc;
using System.Web.Routing;

namespace Danyuers.SimpleMvc{
    internal class RouteRegister {
        public static void Regist(RouteCollection routes) {
            routes.RouteExistingFiles = false;
            routes.Ignore("{resources}.axd/{pathInfo*}");

            routes.MapRoute(
                name: "default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Hello", action = "Index", id = UrlParameter.Optional },
                namespaces:new String[]{"Danyuers.SimpleMvc.Controllers*"}
            );
        }
    }
}

汎用ルーティングの確立は,{controller}/{action}/{id}であることが明らかになった.最後に、コントローラを確立します.ハローを立てるcs、コードは以下の通りです.
using System;
using System.Web.Mvc;

namespace Danyuers.SimpleMvc.Controllers {
    public class HelloController:Controller{
        public void Index() {
            Response.Write("<h1>Hello,world!!</h1>");
            Response.End();
        }
    }
}

はい、最後にコンパイルして、iisマッピング、実行すればいいです.最初の単一httphandlerプロジェクトに比べて、今回はドメイン名に直接アクセスすればいいです.
Webformに比べてmvcのコード分布は分散しているが、より清潔で、弾力性に富んでいる.