• mvc读书笔记


    在mvc3的時候引入了Razor。
    Mvc4中默認的頂級目錄
    /controllers 保存那些處理URL請求的controller類
    /models 保存那些表示和操縱數據以及業務對象的類
    /views 保存那些負責呈現輸出結果的UI模板文件
    /scripts 保存javascript庫文件和腳本(js)
    /Images 保存站點使用的圖像
    /content 保存css和其他站點內容
    /Filters 保存過濾器代碼。過濾器是一項高級功能
    /app_data 保存想要讀取/寫入的數據文件
    /app_start 保存一些功能的配置代碼,如路由,捆綁和web api
     

    Mvc的工作機制
    URL首先告知路由機制去實例化哪個控制器,調用哪個操作方法,并為該方法提供需要的參數。然後控制器的方法決定使用哪個視圖,并對該視圖進行渲染。
    路由講URL映射到操作的方式
    講視圖作為模板生成返回給瀏覽器的字符串(通常是HTML格式)





     Viewbag.message 等同于viewdata[“message”]
    @@符號轉儀為一個@
    @section語法為佈局中定義的一個節指定的內容
    RenderSection方法有一個重載版本,允許指定不需要的節。可以給required的參數傳遞一個false在標記XX節是可選的。
    Egg:首先 @<section xx{This is the <strong>footer</strong>}     //這裡xx表示是一個節
    引用該節點, @RenderSection(“xx”,required:false)//這裡表示引用了xx節點。如果xx節點存在的話。
    _viewstart.cshtml默認佈局
    指定部分視圖
    egg:public ActionResult Message()
    {
     ViewBag.Message=”This is a partial view”;
    Return PartialView();
    }
    在這種情況下渲染的是視圖Message.cshtml。如果佈局有_ViewStart.cshtml頁面指定(而不是在視圖中)的,講無法渲染佈局。除了不能指定佈局之外,部分視圖看起來和正常視圖沒有任何區別。



    ASP.NET MVC4項目會自動包含對實體框架的引用。EF是一個對象關係映射框架。



    HTML輔助方法是為了輔助HTML開發的。
    關於HTML輔助方法的使用。
    Html.BeginForm輔助方法向當前URL發送一個HTTP POST 請求。
    Html.ValidationSummary輔助方法可以用來顯示ModelState字典中所有驗證錯誤的無序列表。
    Html.TextBox輔助方法渲染一個type特性為text的input標籤。
    Html.TextArea輔助方法是一個和Html.TextBox相似的輔助方法。
    Html.Label輔助方法是一個顯示方法
    Html.DropDownList和Html.ListBox輔助方法都返回一個<select/>元素。
    Html.ValidationMessage輔助方法當ModelState字典中的某一特定字段出現錯誤時,可以使用ValidationMessage輔助方法來顯示相應的錯誤。
    routes.MapRoute( //設置默認路由值
                    "Default", // 路由名称
                    "{controller}/{action}/{id}", // 带有参数的 URL
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
                );



    1.[required]必填
    2. anonymous 匿名的
    3.StringLength   Egg:[StringLegth(160,MinimumLength=3)]
    4.RegularExpression  Egg:[@”[A-Za-z0”]
    5.Range範圍    Egg:Range(5,40)
    6.

    authorize 授權 委託
    egg:
     namespace MvcApplication3.Controllers
    {

        public class album
        {
            private int Album;

            public int Album1
            {
                get { return Album; }
                set { Album = value; }
            }
            private string Title;

            public string Title1
            {
                get { return Title; }
                set { Title = value; }
            }
        }
       
        public class sdyController : Controller
        {
            //
            // GET: /sdy/

            public ActionResult Index()
            {
                var a = GetAlbums();
                return View(a);
            }
             [Authorize]
            public ActionResult Buy(int id)
            {
                var buys = GetAlbums().Single(a => a.Album1 == id);
                return View(buys);
            }

            private static List<album> GetAlbums()
            {
                //var albums = new List<album> {
                //new album{Album1=1,Title1="number one"},
                //new album{Album1=2,Title1="number two"},
                //new album{Album1=3,Title1="number three"}
                //};

                var albums = new List<album>();
                var ablumss = new album();
                ablumss.Album1 = Convert.ToInt32(2);
                ablumss.Title1="number one";
                albums.Add(ablumss);
                //ablumss.Add(1, "number one");
                //ablumss.Add(2, "number two");
                //ablumss.Add(3, "number three");
                return albums;
            }
        }
    }

    這個是Index頁面
    @model List<MvcApplication3.Controllers.album>

    @{
        ViewBag.Title = "Index";
    }

    <h2>Index</h2>
    <ul>
    @foreach (var a in Model)
    {
     <li>
    @a.Album1  
    @a.Title1   
    @Html.ActionLink("買吧!", "Buy", new {id=a.Album1})   
    <a href="@Url.Action("Buy","sdy",new {id=a.Album1})">購買a吧</a>
     </li>
    }
    </ul>


    這個是Buy頁面
    @model MvcApplication3.Controllers.album

    @{
        ViewBag.Title = "Buy";
    }

    <h2>Buy</h2>

     @Model.Album1
     OK 可以購買了!

    當在Buy上面加上一個[Authorize]的時候,能夠智能判定用戶當前是否處於登陸狀態,如果沒有處於登陸狀態,則頁面會自動跳到登陸頁面。如果處於登陸狀態,則直接進入登陸后的頁面。
    如果把[Authorize]去掉,則會直接跳到指定的頁面。


       [Authorize(Roles="")]//授權給某些用戶


    對比RUL重寫和路由
    URL重寫是講一個url地址映射到另外一個地址。
    路由關注的則是如何將URL映射到資源。
    每個ASP.NET MVC 應用程序都至少需要一個路由來定義自己處理請求的方式,程序中總是會有一個或多個路由。複雜的應用程序可能會包含有數十個甚至更多的路由。
    Application_Start方法中調用了一個名為RegisterRoutes的方法。該方法在~/App_Start/RouteConfig.cs文件中,我們可以用來為應用程序註冊需要的所有的路由。
    例如/albums/display/123的請求會導致MVC實例化AlbumsController控制器,并調用其中的Display方法,通知講123傳遞給Display方法當做參數。
    路由的執行順序是從上往下的。
    Egg:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;

    namespace MvcApplication3
    {
        public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");//忽略這個規則的url

                routes.MapRoute(name: "Default5",
               url: "{controller}/{action}/{*id}",
               defaults: new { controller = "Home", action = "Index" }
               );
             
                routes.MapRoute(name: "Default4",
                   url: "{controller}/{action}",
                   defaults: new { controller = "Home", action = "Index" }
                   );
                routes.MapRoute(name: "Default3",
                    url: "{controller}/{action}/{parma1}/{parma2}",
                    defaults: new { controller="",action=""}
                    );
               
            }
        }
    }

  • 相关阅读:
    网络编程定时器一:使用升序链表
    木秀林网,网站专注于消息队列技术的研究
    Disruptor Ringbuffer
    Elasticsearch( 插件开发)
    Elasticsearch源码分析(一)启动流程 ModuleBuilder injector
    NativeScriptEngineService 被调用流程
    JAX-RS Resteasy
    gradle eclipse 配置
    maven repository 配置
    Eclipse中部署ES源码运行
  • 原文地址:https://www.cnblogs.com/sdya/p/4601921.html
Copyright © 2020-2023  润新知