標籤:rect ant 實現 nbsp change 控制 control border dir
<1>
控制器
</pre><pre name="code" class="csharp">using MvcTest.Models;using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace MvcTest.Controllers{ public class TestController : Controller { salesEntities1 db = new salesEntities1(); //ADO實體模型類 //-----以下的Model接收的是一個泛型對象-------// public ActionResult Index() { var query = from r in db.T_User // 查詢id為2的一條資料 ,儘管僅僅是查詢一條資料,可是這個query是一個泛型對象。 where r.Id==2 select r; ViewData.Model = query; return View(); } //-----以下的Model接收的是一個普通對象-------// public ActionResult Index2() { T_User u = db.T_User.Single(m => m.Id == 2); // 在T_User表(類)中查詢id等於2的一條資料(有且僅有一條) u是一個對象 return View(u); } //-----上面兩個都是強型別傳值。以下的是弱類型傳值的使用------// public ActionResult Index3() { T_User u = db.T_User.Single(m => m.Id == 2); ViewData["userinfo"] = u; return View(); } //=========================以上是示範範例強型別與弱類型的傳值方式=============================// //-----------------增-----------------// [HttpGet] public ActionResult Add() { return View(); } [HttpPost] public ActionResult Add(T_User u) { db.T_User.Add(u); //加入一條資料//db.Entry(u).State = System.Data.EntityState.Added; //假設以下的不行,就改成這條試試。(2015-4-26測試的) //db.Entry(u).State = System.Data.Entity.EntityState.Added; //用這就也能夠實現加入資料 db.SaveChanges(); return RedirectToAction("List");//加入資料後跳轉到List這種方法 } //-----------------刪-----------------// public ActionResult Delete(int id) { T_User u = db.T_User.Single(r => r.Id == id); ViewData.Model = u; return View(); } [HttpPost] public ActionResult Delete(T_User u) { //EntityState:是描寫敘述實體的狀態,它是一個枚舉類型;它有5個值 //Deleted:實體將由上下文跟蹤並存在於資料庫中。可是已被標記為在下次調用 SaveChanges 時從資料庫中刪除。//db.Entry(u).State = System.Data.EntityState.Deleted; //假設以下的不行,就改成這條試試。
(2015-4-26測試的) db.Entry(u).State = System.Data.Entity.EntityState.Deleted; //刪除此條資料 db.SaveChanges(); return RedirectToAction("List");// 刪除資料後跳轉到List這種方法 } //---------------改(更新資料)-----------// [HttpGet] public ActionResult Edit(int id) { T_User u = db.T_User.Single(r => r.Id == id); //編輯資料之前,將要編輯的資料查詢出來展示在頁面上,以便改動 ViewData.Model = u; return View(); } [HttpPost] public ActionResult Edit(T_User u) { //EntityState是一個枚舉類型。它是描寫敘述實體的狀態。
//Modified:實體將由上下文跟蹤並存在於資料庫中,已改動當中的一些或全部屬性值//db.Entry(u).State = System.Data.EntityState.Modified; //假設以下的不行,就改成這條試試。(2015-4-26測試的) db.Entry(u).State = System.Data.Entity.EntityState.Modified; //更新此條資料 //除了上面這樣的跟新資料外。還能夠採用以下這樣的方式來更新資料 //T_User s = db.T_User.Single(r => r.Id == u.Id); //UpdateModel<T_User>(s); //注意假設用要UpdateModel來更新實體類對象資料,那麼這個實體類對象一定要來自於db 即:s是從db中查詢出來的 db.SaveChanges(); return RedirectToAction("List"); //編輯完後跳轉到List這種方法 } //---------------展示資料-----------// public ActionResult List() { var q = db.T_User; //查出T_User這個表(類)的資料。讓它展示在頁面上 ViewData.Model = q; return View(); } }}
Index視圖 --------控制器中傳遞的是一個泛型對象
@model IEnumerable<MvcTest.Models.T_User>@{ ViewBag.Title = "Index";}<h2>Index</h2>@foreach (var i in Model){ <div>@i.Id</div><div>@i.UserName</div><div>@i.Age</div>}
Index2視圖 --------控制器中傳遞的是一個普通對象
@model MvcTest.Models.T_User@{ ViewBag.Title = "Index2"; Layout = "~/Views/Shared/_Layout.cshtml";}@section UserInfo{ 這個表是一個使用者資訊表!我使用了主版頁面哦 }<td>@Model.Id</td><td>@Model.UserName</td><td>@Model.Age</td>
Index3視圖 ---------沒有使用強型別傳遞資料
@{ Layout = null; }@using MvcTest.Models @*這裡是引入T_User類的命名空間*@<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>Index3</title></head><body> <div> @{T_User u = ViewData["UserInfo"] as T_User;} <table border="1"> <tr><td>@u.Id</td><td>@u.UserName</td><td>@u.Age</td><td>@Html.ActionLink("編輯", "Edit", new { id=u.Id})</td></tr> </table> </div></body></html>
Index2視圖使用的模板頁
<!DOCTYPE html><html><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr")</head><body> @using (Html.BeginForm()) { @Html.AntiForgeryToken() //布局頁面還有節(Section)的概念。也就是說,假設某個視圖模板中定義了一個節(事實上就是在某一塊地方佔個位置), //那麼能夠把它單獨呈現出來為了防止因缺少節而出現異常,能夠給RenderSection()提供第2個參數: //第一個參數:誰便定義,相當於給這個節取個名字 。 //第二個參數:指定子頁面這個節是否是必需的,假設在這裡設為true;可是在子頁面沒有給這個名稱的節的話。編譯是通只是的。 //如今想在子頁面寫一段話,來介紹以下這個table的內容資訊。 <p style="color:red">@RenderSection("UserInfo", true)</p> <table border="1"> <tr>@*這裡面就是呈現子頁的主體內容的*@ @RenderBody()</tr> </table> }</body></html>
Add視圖 (加入資料)
@model MvcTest.Models.T_User@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>加入資料</title></head><body> @using (Html.BeginForm()) { <table> <tr><th>username</th><td>@Html.TextBoxFor(m => m.UserName) </td></tr> <tr><th>性別</th><td>@Html.TextBoxFor(m => m.Gender)</td></tr> <tr><th>年齡</th><td>@Html.TextBoxFor(m => m.Age) </td></tr> <tr><th><input type="submit" value="提交" /></th><td></td></tr> </table> }</body></html>
Delete 視圖 (刪除資料)
@model MvcTest.Models.T_User@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>您確定要刪除此條資料嗎?</title></head><body> @using (Html.BeginForm("Delete","Test",FormMethod.Post)) { <table> <tr><th>id</th><td>@Html.TextBoxFor(m=>m.Id)</td></tr> <tr><th>username</th><td>@Html.TextBoxFor(m => m.UserName)</td></tr> <tr><th>性別</th><td>@Html.TextBoxFor(m => m.Gender)</td></tr> <tr><th>年齡</th><td>@Html.TextBoxFor(m => m.Age)</td></tr> <tr><th><input type="submit" value="刪除"/></th></tr> </table> }</body></html>
Edit 視圖 (編輯資料。更新資料)
@model MvcTest.Models.T_User@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>編輯</title></head><body> <form action="/Test/Edit" method="post"> <div> <table> <!--(假如我控制器中的action方法接收的是一個User類對象)當把HTML頁面的表單資料提交到控制器的action方法中,Mvc中有一個叫ModelBinder的機制,會將依照你提交表單的name屬性值與類的屬性進入對照。假設類的某個屬性與提交過來的表單name屬性值一致,那麼就將這個表單的value值賦值給類相應的屬性。比如:從html頁面傳過來的表單的name屬性值為"UserName" 即name="UserName", 假如控制器的action方法的參數是一個User類對象,又假如正好User類有個屬性名稱也叫"UserName" 那麼就將name="UserName"的那個表單的value值賦給User類的UserName屬性 --> <!---經過上面的分析 得出:即便我們提交資料不是一個類的對象。可是在控制器中我們仍然能夠用類的對象來得到我們提交的資料,前提是類的屬性欄位要與我們提交的表單name屬性值一致(屬性值能夠忽略大寫和小寫)。--> @*<tr><th>編號</th><td><input type="text" name="Id" /></td></tr> <tr><th>username</th><td><input type="text" name="UserName" /></td></tr> <tr><th>性別</th><td><input type="text" name="Gender"/></td></tr> <tr><th>年齡</th><td><input type="text" name="Age" /></td></tr> <tr><td><input type="submit" value="提交" /></td></tr>*@ <!--也能夠寫成一下形式--> <tr><th>編號</th><td>@Html.TextBoxFor(r=>r.Id)</td></tr> <tr><th>username</th><td>@Html.TextBoxFor(r=>r.UserName)</td></tr> <tr><th>性別</th><td>@Html.TextBoxFor(r=>r.Gender)</td></tr> <tr><th>年齡</th><td>@Html.TextBoxFor(r=>r.Age)</td></tr> <tr><td><input type="submit" value="提交" /></td></tr> </table> </div> </form></body></html>
List 視圖 (展示資料)
@model IEnumerable<MvcTest.Models.T_User>@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>List</title></head><body> <p> @Html.ActionLink("加入資料", "Add") </p> <table border="1"> <tr><th>username</th><th>年齡</th><th>性別</th><th>操作</th></tr> @foreach (var item in Model) { <tr> <td>@Html.DisplayFor(modelItem => item.UserName)</td> <td>@Html.DisplayFor(modelItem => item.Age)</td> <td>@Html.DisplayFor(modelItem => item.Gender)</td> <td> @Html.ActionLink("編輯", "Edit", new { id=item.Id }) | @Html.ActionLink("具體", "Details", new { id=item.Id }) | @Html.ActionLink("刪除", "Delete", new { id=item.Id }) </td> </tr> } </table></body></html>
MVC 強型別傳值Model。和弱類型傳值ViewData[""]。及用EF進行增刪查改(主版頁面的使用)