MVC 強型別傳值Model。和弱類型傳值ViewData[""]。及用EF進行增刪查改(主版頁面的使用)

來源:互聯網
上載者:User

標籤: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[&quot;&quot;]。及用EF進行增刪查改(主版頁面的使用)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.