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=""}
);
}
}
}
mvc读书笔记的更多相关文章
- MVC 读书笔记
一.路由 1.HttpApplication中的ASP.NET MVC .Net 3.5 引入了System.Web.Routing程序集,通过Url Routing的机制,可以实现将一个虚拟路径的请 ...
- 《JavaScript高级程序设计》读书笔记--前言
起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- 读书笔记_MVC__关于通过js构建ORM,实现Model层
最近一直在学习MVC构建富应用的WEB程序,自己一直对MVC的设计模式理解的不是十分透彻,终于在研读了github上Spine的源码之后,对构建Model层有了一点自己的理解. 本文仅为个人理解,如有 ...
- 读书笔记 之 《阿里巴巴Java开发手册》
一.前言 这本书主要定义了一些代码的规范以及一些注意事项.我只根据我自己的不足,摘录了一些内容,方便以后查阅. 二.读书笔记 命名 1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符 ...
- Struts2技术内幕 读书笔记三 表示层的困惑
表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form ...
- 《CLR via C#》读书笔记(一)——CLR的执行模式
前言 万事开头难,很早之前就想写博客记录些东西,迟迟未行动,甚是遗憾.原因诸多,大体上无非都是懒.没意志力等等.这次从自己的读书笔记开始,兴许能够有所改变. 一.CLR概念 CLR(Common La ...
- Key Technologies Primer 读书笔记,翻译 --- Struct 学习 1
原文链接:https://struts.apache.org/primer.html 本来想写成读书笔记的,结果还是变成翻译,谨作记录,学习. 1.HTML -- 见我前面文章 2.Interne ...
- 《玩转Django2.0》读书笔记-探究视图
<玩转Django2.0>读书笔记-探究视图 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求 ...
随机推荐
- 了解:C#三维数组和锯齿数值
此文章,只需了解,用到的不多. string[,,] three = new string[2, 3, 5]; //定义一个三维数组,给数组分别辅助2,3,5 对此数组的解释://有2个二维数组,每 ...
- 1.文本编辑器-->CKEditor+CKFinder使用与配置
一.CKEditor介绍 官网地址:http://ckeditor.com CKEditor下载地址:http://ckeditor.com/download CKFinder(免费版本)下载地址:h ...
- django-admin管理后台高级自定义
django自带的admin后台管理系统,在很多网站中被称为django的杀手级的应用.那么django-admin的适用情形倒底有哪些呢,一般 来说对于大型的商业性的项目通常不用采用django-a ...
- mysql字符集的修改
修改数据库字符集: 代码如下: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...]; 把表默认的字符 ...
- gradle -v不是外部命令, 内部命令,或批处理文件
安装完gradle并且配置了环境变量之后,使用windos+R,cmd 进入Dos命令gradle -v检测版本号出现了: 1 --首先找到gradle文件所在目录 一般是在C:\Users\su\. ...
- 在linux命令行利用SecureCRT上传下载文件
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地?与ssh有关的 ...
- 反编译DLL文件
我们平时在工作中经常会遇到一些已经被编译后的DLL,而且更加麻烦是没有源代码可以进行修改,只能针对这个DLL的文件进行修改才能得到我们想要的结果:本文将通过一个实例来演示如果完成一个简单的修改;我们将 ...
- tr设置display属性时,在FF中td合并在第一个td中显示的问题
今天用firefox测试页面的时候,发现用javascript控制 tr 的显示隐藏时,当把tr的显示由“display:none”改为“display:block”时,该tr下的td内容合并到了 ...
- Redis(什么是Redis?)
Redis是一个开源的内存数据库,可以作为缓存也可以作为消息队列.它支持的数据结构有:字符串.哈希表.列表.集合.有序集合. Redis:Redis是Remote Dictionary Server( ...
- css设置一行显示,超出部分显示...
碰到一些介绍时候需要一行显示,然后超出部分用...替代 white-space: nowrap;不换行显示text-overflow: ellipsis;以...显示overflow: hidden; ...