MVC3 学习总结一(未发布)
MVC:? Model,View,Control
?
設置View中的數據
1. 返回model,View中強類型化
Control:
public ActionResult Browse(string Genre)
?????? {
?????????? var Album = db.Genres.Include("Albums").Single(c => c.Name == Genre);
?????????? ViewData["Genre"] = Genre;
?????????? return View(Album);
?????? }
?
View:?
? @model Mvc_MusicShop_diy.Models.Genre?? (強類型化,一個View只能強類型化一個)
類似的 當 control 返回? list<xx>集合,view 應當如下強類型化
@model List<Mvc_MusicShop_diy.Models.Genre>?
or?
@model? IEnumerable<Mvc_MusicShop_diy.Models.Genre>
使用:
<ul>
@foreach (var Genre in Model)
{
<li>
@Html.ActionLink(@Genre.Name, "Browse", new { Genre=@Genre.Name})
</li>
}
</ul>
?
?
2.? ViewData
Control 設置:ViewData["Provinces"] = db.Provinces.ToList();
View使用:????? @using Mvc_MusicShop_diy.Models
?????????????????????????????? ViewData["Provinces"]?? as? List<Province>
?
3.? ViewBag
ViewBag.title=”購物車頁面”?? //設置View 頁面的html元素的值
?
?
設置模版View
1._ViewStart.cshtml 代碼制定了頁面的默認模版的路徑
@{Layout = "~/Views/Shared/_Layout.cshtml"; } ? 查看模版頁面代碼 ? <!DOCTYPE html> <html> <head> <title>@ViewBag.Title</title> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> </head> <body> <div class="page"> <div id="header"> <div id="title"> <h1>歡迎光臨南京網上商城</h1> </div> <div id="logindisplay"> @Html.Partial("_LogOnPartial") </div> <div id="menucontainer"> <ul id="menu"> <li>@Html.ActionLink("商城主頁", "Index", "Home")</li> <li>@Html.ActionLink("關于商城", "About", "Home")</li> <li>@{Html.RenderAction("CartSummary", "ShoppingCart", "");}</li> ? </ul> </div> </div> @*@{Html.RenderAction("Category", "Home");}*@ <div id="main"> </div> <div id="footer"> 關于我們|聯系我們|人才招聘|商家入駐|廣告服務|手機京東|友情鏈接|銷售聯盟|商城社區|南京商城公益 </div> </div> </body> </html> 注意: 所有view默認模版代碼里,有完整的 html 標記 ,包含title,body @RenderBody() 占位符是view頁面的代碼所在的位置 2.? 通用模版?[ChildActionOnly]??? //表明了,通過url :? /control/CartSummary 訪問是不存在的;只作為其他View的一部分
?????? public ActionResult CartSummary()
?????? {
?????????? var cart = ShoppingCart.GetCart(this.HttpContext);
?????????????????????? ViewData["CartCount"] = cart.GetItemsCount();
?????????????????????? return PartialView();? //或者 PartialView("CartSummary");
?????? }
?
在 _ViewStart.cshtml 中使用
<li>?? @{Html.RenderAction("CartSummary", "ShoppingCart", "");}? </li>
注意:@{???? }
?
?
MVC3自帶的客戶端驗證和服務端驗證
原理:model與view 模型 綁定
必須引用:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
?
?
@Html.ValidationSummary(true)? 在指定地方將錯誤集中展示? ,生成的html代碼為
? <ul><li>錯誤1</li><li>錯誤2</li></ul>
?
@Html.ValidationMessageFor(model => model.Title)???? 展示title出錯的信息(根據model中類型與屬性自動 js 判斷和服務端判斷)
?
服務端根據 ModelState.IsValid?? Bool 的值 (根據model相關約束驗證后是否有錯誤)
[HttpPost] public ActionResult Create(Album album) { if (ModelState.IsValid) { db.Albums.Add(album); db.SaveChanges(); return RedirectToAction("Index"); } ? return View(album); }?
?
Model 中添加自定義約束
比如: 某不能為空,若為空提示自定義的錯誤消息;view中顯示的元素名稱為XX?email,phone 正則驗證;
首先得引用命名空間
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
?
[DisplayName("手機號")]
[Required(ErrorMessage = "手機號不能為空")]
[RegularExpression(@"^1[3|4|5|8]\d{9}$", ErrorMessage = "手機號格式錯誤")]
public? string phone{get;set;}?
[ScaffoldColumn(false)]?? //主鍵;當與view模型綁定生成自動生成html元素的時候,是否隱藏該列
? public int AddressId { get; set; }
?
?
?
posted on 2014-02-21 16:41 水墨.MR.H 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/StudyLife/p/3559725.html
總結
以上是生活随笔為你收集整理的MVC3 学习总结一(未发布)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 獲取mysql字段的注释或描述
- 下一篇: [C++学习历程]基础部分 C++中的函