ASP.NET MVC 4アプリケーションの基本構造と実行プロセス---ASP.NET学習ノート(1)

13067 ワード

今日からASPを勉強します.NET WEBアプリ、ついている本は『ASP.NET MVC 4開発ガイド』です.この本の説明がはっきりしているような気がしますが、一つの点をつかんで長々と議論したり、長い辞書の性質のリストを直接リストしたりするのではなく、広げられる場所にリンクを与えたりして、ガイドの性質に合っています.
1.文書パス:APS.NET MVCプロジェクトディレクトリでのドキュメントの検索は、「URLルーティング」で検索されます.APP_StartRouteConfig.csというファイルは、ドキュメントの検索方法を定義します.
namespace MvcGuestBook
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

IgnoreRoute: ASP.NETが処理しないURLフォーマットMapRoute:ASPを定義する.NETのウェブサイトのルートの主な方式、その中のパラメータ:
  • name:ルーティング名
  • url:コード内の{controller}/{action}/{id}のようなウェブサイトのフォーマットを定義すると、コントローラ/動作/ルーティング値
  • となる.
  • defaults:urlの各フォーマットのデフォルト値は、上記のコードの設定に従って、WEBアプリケーションが実行を開始すると、まずcontrollerのホームコントローラを探して、Aboutメソッド(公開)を探して実行しますが、最後のデフォルトルーティングは、localhostに最初に入ったときにジャンプしたデフォルトのページアドレスです.2.マスターページ~/View/ViewStart.cshtmlファイルは、すべてのViewが実行される前に事前に読み込まれます.デフォルトは
  • です.
    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    その中で指示された~/Views/Shared/Layout.cshtmlはメインページです.
    
    <html lang="zh">
        <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            <meta charset="utf-8" />
            <title>@ViewBag.Title -    ASP.NET MVC     title>
            <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
            <meta name="viewport" content="width=device-width" />
            @Styles.Render("~/Content/css")
            @Scripts.Render("~/bundles/modernizr")
        head>
        <body>
            <header>
                <div class="content-wrapper">
                    <div class="float-left">
                        <p class="site-title">@Html.ActionLink("          ", "Index", "Home")p>
                    div>
                    <div class="float-right">
                        <section id="login">
                            @Html.Partial("_LoginPartial")
                        section>
                        <nav>
                            <ul id="menu">
                                <li>@Html.ActionLink("  ", "Index", "Home")li>
                                <li>@Html.ActionLink("  ", "About", "Home")li>
                                <li>@Html.ActionLink("    ", "Contact", "Home")li>
                            ul>
                        nav>
                    div>
                div>
            header>
            <div id="body">
                @RenderSection("featured", required: false)
                <section class="content-wrapper main-content clear-fix">
                    @RenderBody()
                section>
            div>
            <footer>
                <div class="content-wrapper">
                    <div class="float-left">
                        <p>© @DateTime.Now.Year -    ASP.NET MVC     p>
                    div>
                div>
            footer>
    
            @Scripts.Render("~/bundles/jquery")
            @RenderSection("scripts", required: false)
        body>
    html>
    

    Viewディレクトリの下にあるすべてのビューがこのマスターページに読み込まれます.3.モデルを作成Modelディレクトリの下にクラスを作成した後、そのクラスのフィールドを設定します.
        public class GuestBook
        {
            public int Id { set; get; }
            public string name { set; get; }
            public string email { set; get; }
            public string content { set; get; }
        }

    4.コントローラ、ビューの作成
      1.  Controller          
      2.   "   /       MVC   (  Entity FrameWork)"
      3.          
      4.          
    

    ここで、コンテキストクラスもModelディレクトリの下に作成する.データベースドキュメントアプリケーションが実行された場合、APP_DATAディレクトリの下には、非表示のデータベースドキュメントがあります(エクスプローラツールバーで「すべてのファイルを表示」をクリックすると表示されます).ViewメソッドView()メソッドは、Controlベースクラスの補助メソッドで、パラメータをViewに渡すための8つのリロードがあります.7.@modelモデルはView(ビュー)の最初の行を宣言し、類似のモデル宣言があります.
    @model IEnumerable.Models.GuestBook>

    この声明の役割はMvcGuestBook.Models.GuestBookというオブジェクトはビュー全体の主なモデルとして使用されます.たとえば、ビュー内のノードの使用方法:
     <strong>  strong>:@Html.DisplayFor(modelItem => item.name)

    この使用法のmodelItemは@model宣言の主なタイプであり、そのフィールドはすべて主モデルが提供するフィールドである.8.Html.ActionLink文
     @Html.ActionLink("    ", "Write")

    HTMLタグに埋め込まれたRazor構文で、解析後に指定したHTMLテキストを出力します.上の文はハイパーリンク機能を表し、1番目のパラメータはハイパーリンクタイトル、2番目のリンクはメインモデルに対応するコントローラで対応するメソッド名、つまりこのハイパーリンクをクリックするとコントローラに渡されて処理されます.たとえば、文のWriteメソッドは、GuestBookContrllerクラスで次のようになります.
          // GET: /GuestBook/Create
            public ActionResult Write()
            {
                return View();
            }
    
            //
            // POST: /GuestBook/Write
    
            [HttpPost]
            public ActionResult Write(GuestBook guestbook)
            {
                if (ModelState.IsValid)
                {
                    db.GuestBooks.Add(guestbook);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
    
                return View(guestbook);
            }

    Writeクラスを2つ再ロードしましたが、このときはアクションフィルタを使って対応する方法を選択します.第1の方法は、HTTP GET要求の送信時に呼び出され、第2の方法は、HTTP POST要求の送信時に呼び出される.私たちがlinkを通じて来たリクエストがGETリクエストなので、最初のメソッドを呼び出します.9.フィールド検証ASP.NETは簡単なフィールド検証方法を提供し、Modelで定義すれば:1.システムをインポートする.ComponentModel.DataAnnotations; 2.フィールドの前に[Required]と注記するには、次のようにします.
       [Required]
       [DisplayName("      ")]
       public string email { set; get; }`

    10.Modelを変更してデータベースを再構築するデータ型(Model)フィールドが変更された場合、データベースは適切な調整を行います.Modelの修正後にWEBアプリケーションを直接実行すると、MvcGuestBookContextというコンテキストクラスの注釈に従って修正する「MvcGuestBookContext」コンテキストをサポートするモデルがデータベース作成後に変更された」という異常エラーが発生します.
    System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges.Models.MvcGuestBookContext>());

    Globalを追加します.asaxファイルのApplication_Startメソッドでは、データモデルを変更した後に自動的にデータベースを再生成できます.