<mvc:annotation-driven />作用,MVC+EF+Linq 實例

 2023-10-21 阅读 24 评论 0

摘要:天才第一步:創建數據庫 創建數據庫的代碼: create table category( id int primary key, name nvarchar(20) )create table news( id int primary key, title nvarchar(20), content nvarchar(200), createTime datetime , caid int constraint fk_ca_id foreig

天才第一步:創建數據庫

在這里插入圖片描述
創建數據庫的代碼:

create table category(
id int primary key,
name nvarchar(20)
)create table news(
id int primary key,
title nvarchar(20),
content nvarchar(200),
createTime datetime ,
caid int constraint fk_ca_id foreign key references category(id) 
)create table comment(
id int primary key,
content nvarchar(100),
createTime dateTime,
userIp nvarchar(50),
newsId int constraint fk_news_id foreign key references news(id)
)

手動添加一些數據
在這里插入圖片描述

天才第二步:創建MVC工程文件

???在這里插入圖片描述

天才第三步:在Models文件夾下創建EF

<mvc:annotation-driven />作用、在這里插入圖片描述

在這里插入圖片描述
“來自數據庫的EF設計器” ,下一步
在這里插入圖片描述
選擇數據庫,如果服務器用的是本地(.),下面就選擇Windows身份驗證,然后找到自己的數據庫
在這里插入圖片描述
下面的”另存為“的名稱默認就好
在這里插入圖片描述
勾選自己需要的表
在這里插入圖片描述
這就是創建好EF的樣子偶~~~

?????????????在這里插入圖片描述

天才第四步:編碼–修改三個頁面

一、首先是控制器(HomeCotroller)名字是默認生成的,也可以自己修改!
在這里插入圖片描述
HomeController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC_YZY.Models;
using System.Data.Entity.Infrastructure;namespace MVC_YZY.Controllers
{//1、控制器類(繼承了controller)public class HomeController : Controller{      /// <summary>/// 數據上下文對象/// </summary>newssystemEntities db = new newssystemEntities();#region 1、 查詢 文章 列表 +ActionResult Index()/// <summary>/// 查詢 文章 列表/// </summary>/// <returns></returns>public ActionResult Index(){//1.查詢 數據庫里的 文章數據(通過 EF 執行)//1.1第一種方式:使用 SQO(標準查詢運算符) 查詢所有未軟刪除的文章//實際返回的是 一個 IQueryable 對象?此處其實是返回了一個 IQueryable 接口的子類對象//IQueryable<newssystemEntities> query= db.news.Where(d => d.AIsDel == false);//此時真實返回的類型未 DbQuery<T> 支持 延遲加載!只有當使用道數據的時候,才去 查詢數據庫//DbQuery<newssystemEntities> query = (db.news.Where(d => d.AIsDel == false)) as DbQuery<newssystemEntities>;//直接將 返回的 DbQuery 轉成 List<T>集合,也就是立即查詢數據庫,并返回查詢到的集合//List<news> list = db.news.Where(d => d.caId == 0).ToList();//1.2第二種方式:使用 Linq語句 查詢所有新聞標題//Linq 僅僅是給程序員用的 語法糖,.NET編譯器會再編譯程序集(中間代碼)的時候,將linq語句轉成 SQO(標準查詢運算符)List<news> list = (from d in db.news where d.caId != 0 select d).ToList();//2.將集合數據傳給視圖//ViewBag.DataList = list;ViewData["DataList"] = list;//3."加載" 視圖return View();}#endregion#region 2、 執行刪除操作(根據ID)+ActionResult Del(int id)/// <summary>/// 執行刪除操作(根據ID)/// </summary>/// <param name="id">要刪除的新聞ID -/home/del/12</param>/// <returns></returns>public ActionResult Del(int id)//此ID會根據路由的url 配置{id}占位符,而被 12 替換掉{//先查詢出來再刪除var modelDel = db.news.FirstOrDefault(n => n.id == id);db.news.Remove(modelDel);int  res= db.SaveChanges();return RedirectToAction("Index", "Home");    }#endregion#region 3、 顯示要修改的數據 +ActionResult Modify(int id)[HttpGet]/// <summary>/// 0.4 顯示要修改的數據/// </summary>/// <param name="id"></param>/// <returns></returns>public ActionResult Modify(int id){#region 本步驟的思路//1、獲取選中的新聞 顯示到一個新的頁面。/** * 首先 根據newsid獲取該新聞的信息 * 將新聞的標題和內容顯示再文本框中* * 然后查詢所有的新聞分類,顯示在下拉框中* * 最后根據該新聞的類別 設置為下拉框的默認選中*///news n = (from a in db.news where a.caId==0 select a).FirstOrDefault();//IEnumerable<SelectListItem> m = (from c in db.categories select c).ToList().Select(c => new SelectListItem { Value = c.id.ToString(), Text = c.name });#endregionnews n = db.news.Find(id);ViewBag.newTitle = n.title;ViewBag.newContent = n.content;var categories = from c in db.categories select c;var temp = new SelectList(categories, "id", "name",n.caId);ViewBag.categories = temp;return View();}#endregion#region 執行修改 +ActionResult Modify(news news)[HttpPost]/// <summary>/// 執行修改/// </summary>/// <param name="news"></param>/// <returns></returns>public ActionResult Modify2(){//首先,找到對象int newid =Convert.ToInt32( Request.Form["id"]);var n = db.news.FirstOrDefault(m => m.id == newid);//var n = db.news.Find(id);//然后,更新數據對象n.caId =Convert.ToInt32( Request.Form["dropCate"]);n.content = Request.Form["txtContent"];n.title = Request.Form["newTitle"];//最后,保存修改db.SaveChanges();return RedirectToAction("Index", "Home"); }#endregion}
}

MVC設計模式。二、然后是Index.cshtml頁面

@using MVC_YZY.Models
@{Layout = null;
}<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width" /><title>Index</title><style type="text/css">#tbList {border: 1px solid #0094ff;width: 800px;margin: 10px auto;border-collapse: collapse;text-align: center}#tbList th, td {border: 1px solid #0094ff;padding: 10px;text-align: center}</style><script type="text/javascript">function Del(id) {if (confirm("您確認要刪除么?")) {window.location = "/Home/Del/" + id;}}function Modify(id) {window.location = "/Home/Modify/" + id;}</script>
</head>
<body><div><table id="tbList"><tr><th>ID</th><th>標題</th><th>內容</th><th>發布時間</th><th>CaId</th><th>操作</th></tr><!--遍歷 action方法 設置給 ViewData 的集合數據,生成HTML 代碼-->@foreach (news a in ViewData["DataList"] as List<news>){<tr><td>@a.id</td><td>@a.title</td><td>@a.content</td><td>@a.createTime</td><td>@a.caId</td><td><a href="javascript:Del( @a.id)">刪除</a><a href="javascript:Modify(@a.id)">修改</a></td></tr>}</table></div>
</body>
</html>

三、最后是 Modify.cshtml 頁面
在這里插入圖片描述

@model MVC_YZY.Models.news
<!--指定頁面Model的屬性 類型-->
@{Layout = null;
}
<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width" /><title>修改</title><style type="text/css">#tbList {border: 1px solid #0094ff;width: 400px;margin: 10px auto;border-collapse: collapse;}#tbList th, td {border: 1px solid #0094ff;padding: 10px;}</style>
</head>
<body>@using (Html.BeginForm("Modify2", "Home", FormMethod.Post)){<table id="tbList"><tr><td colspan="2">修改 @Html.HiddenFor(a => a.id)</td></tr><tr><td>標題:</td>@*<td>@Html.TextBox("txtName", (object)Model.ATitle)</td>*@<!--使用HTMLHelper強類型方法 直接 從MOdel 中根據title屬性生成文本框--><td>@Html.TextBox("newTitle", ViewBag.newTitle as string)</td></tr><tr><td>分類:</td><!--使用強類型方法根據 標題 屬性生成下拉框 并自動根據model屬性里的title 設置下拉框的 默認選中項-->@*<td>@Html.DropDownListFor(a=>a.id, ViewBag.CateList as IEnumerable<SelectListItem>)</td>*@<td>@Html.DropDownList("dropCate",ViewBag.categories as SelectList) </td></tr><tr><td>內容:</td><!--使用HTMLHelper強類型方法 直接 從MOdel 中根據content屬性生成文本域-->@*<td>@Html.TextAreaFor(a => a.content, 10, 60, null)</td>*@<td>@Html.TextBox("txtContent", ViewBag.newContent as string)</td></tr><tr><td colspan="2"><input type="submit" value="確定修改" />@Html.ActionLink("返回", "Index", "Home")</td></tr></table>       }
</body>
</html>

天才第五步:查看運行效果

一、刪除頁面

在這里插入圖片描述

mvc controller。二、修改頁面
在這里插入圖片描述

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/153914.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息