簡単なmvcの1つ:簡単な始まり
7325 ワード
mvcは今まで勉強して、相対的に学んだ一連の知識をまとめて、そこでこのタイトル-簡単なmvcがありました.文は名の通り、簡単なmvcの知識が書かれており、目標群も言うまでもない.この記事は簡単に始まり、hello worldのようなwebプロジェクトを最初から構築します.
asp.Netプロジェクトのリクエスト処理の核心はIHttpHandlerであり,前のPageでも後のMVCでもある.だから最も簡単なwebプロジェクトは、IHttpHandlerのプロジェクトが1つしかありません.プロジェクトには2つのファイルしかありません.1つです.ashxファイル、内容:
もう1つは、対応するコードファイルです.Helloというクラス、つまり上のClass属性が指すカテゴリを作成します.コードは次のとおりです.
次にコンパイル(コンパイル先ファイルをbinに変更してください)し、localhost:xxxx/xxを介して仮想ディレクトリにマッピングします.ashxは、作成されたプロジェクトにアクセスできます.対応するリファレンス(system.web)を追加してください.
はい、簡単なプロジェクトの構築はすでに完成しましたが、これは本当のmvcではありません.mvcの最も直感的な表現はルーティングマッピングで、webformのファイルマッピングとは違います.簡単なmvcプロジェクトにはどんなものが必要ですか?第一にglobal.asaxファイル、HttpApplicationにナビゲートします.第二に、ルーティングマッピングテーブル、ルーティングを定義する.第三に、ルーティングマッピングオブジェクト、すなわちコントローラである.上のashxのようにglobal.asaxも1行の命令を含むだけです.
同じようにglobalを構築しますcsは、SimpleMvcApplicationを確立し、コードは以下の通りである.
ルーティングマッピングが定義されているRouteRegisterに注意してください.別のコードファイルを作成するcs、コードは以下の通りです.
汎用ルーティングの確立は,{controller}/{action}/{id}であることが明らかになった.最後に、コントローラを確立します.ハローを立てるcs、コードは以下の通りです.
はい、最後にコンパイルして、iisマッピング、実行すればいいです.最初の単一httphandlerプロジェクトに比べて、今回はドメイン名に直接アクセスすればいいです.
Webformに比べてmvcのコード分布は分散しているが、より清潔で、弾力性に富んでいる.
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のコード分布は分散しているが、より清潔で、弾力性に富んでいる.