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=""}
                );
           
        }
    }
}

时间: 2024-10-07 08:08:53

mvc读书笔记的相关文章

MVC 读书笔记

一.路由 1.HttpApplication中的ASP.NET MVC .Net 3.5 引入了System.Web.Routing程序集,通过Url Routing的机制,可以实现将一个虚拟路径的请求映射到一个Action方法上. 在Asp.net MVC中,Route类指定Asp.net应用程序中针对虚拟路径请求的处理方式,可以为每种URL模式创建一个Route对象.Route类定义如下: public class Route : RouteBase 为了完成针对请求的路由工作,在Asp.n

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

《大型网站技术架构》读书笔记之八:固若金汤之网站的安全性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.网站应用攻击与防御 二.信息加密技术与密钥安全 三.信息过滤与反垃圾 四.电子商务风险控制 五.学习总结 转眼之间,<大型网站技术架构>的读书笔记到此就结束了.最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的).通过本书的学习,我们从高性能.高可用.伸缩性.可扩展性.安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览

Struts2技术内幕 读书笔记三 表示层的困惑

表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form1" method="post" action="loginServlet"> <table width="357" border="0" align="center"> <t

【游戏设计模式】之四 《游戏编程模式》读书笔记:全书内容梗概总结

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/53240330 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文的Github版本:QianMo/Reading-Notes/<游戏编程模式>读书笔记 这是一篇超过万字读书笔记,总结了<游戏编程模式>一书中所有章节与内容的知识梗概. 我们知道,游戏行业其实一直很缺一本系

这些基础知识你都了解吗?——《松本行弘的程序世界》读书笔记(上)

1. 前言 半个月之前买了这本书,还是经园子里的一位网友推荐的.到现在看了一半多,基础的都看完了,剩下的几章可做高级部分来看.这本书看到现在,可以说感触很深,必须做一次读书笔记! 关于这本书,不了解的可以去网上查查.作者是Ruby语言的创始人,可谓是程序世界中的高手,开卷有益,不管你是哪个层次的编程人员,相信都能或多或少的汲取到你想要的营养. 下面将总结一下看完本书我记录下的一些知识点.有的是书中的原话,有的是我个人的理解,供参考. 2. 面向对象 2.1 多态性 面向对象三大原则:继承.封装和

读书笔记8网站的安全架构

一.网站应用攻击与防御 二.信息加密技术与密钥安全 三.信息过滤与反垃圾 四.电子商务风险控制 五.学习总结 转眼之间,<大型网站技术架构>的读书笔记到此就结束了.最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的).通过本书的学习,我们从高性能.高可用.伸缩性.可扩展性.安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览大型网站技术的面貌.后面,等我找完工作,拿到offer后,也许会抽出时间去实践下大型网站所使用的

《松本行弘的程序世界》读书笔记

1. 前言 半个月之前买了这本书,还是经园子里的一位网友推荐的.到现在看了一半多,基础的都看完了,剩下的几章可做高级部分来看.这本书看到现在,可以说感触很深,必须做一次读书笔记! 关于这本书,不了解的可以去网上查查.作者是Ruby语言的创始人,可谓是程序世界中的高手,开卷有益,不管你是哪个层次的编程人员,相信都能或多或少的汲取到你想要的营养. 下面将总结一下看完本书我记录下的一些知识点.有的是书中的原话,有的是我个人的理解,供参考. 2. 面向对象 2.1 多态性 面向对象三大原则:继承.封装和

《淘宝技术这十年》读书笔记 (二).Java时代的脱胎换骨和坚若磐石

马云说过"一个好的东西往往是是说不清楚的",姑且不论这句话的对与错.但我真的很佩服<淘宝技术这十年>这本书的作者子柳,能够通过淘宝的一些故事,按照时间顺序和IT发展的各种技术描述清楚,而且过程中读起来非常有意思. 该读书笔记中参杂了很多原文的知识,因为我实在无法割舍,都挺有意思的:同时记录一些有用的知识,通过这本书能介绍些学过的知识或面试中可能出现的题目及作者所思,文章还是非常有趣的,希望对大家有所帮助! 一. Java时代 脱胎换骨 我的师傅黄裳曾经说过"好的架