[原創(chuàng)]Asp.net MVC 學(xué)習(xí)之路-003(增刪改查嗜憔,后端手工,前端生成)

時(shí)間:2017-03-09

Asp.net Mvc實(shí)現(xiàn)增刪改查

1便锨, 創(chuàng)建數(shù)據(jù)庫

可參考我寫的EntityFramework實(shí)現(xiàn)過程:http://www.reibang.com/nb/10166743
基于EF-ModelFirst思想在項(xiàng)目models文件夾下新建一個(gè)ADO.NET實(shí)體數(shù)據(jù)模型围辙,完成實(shí)體和關(guān)系的建立,并生成數(shù)據(jù)庫放案。

PIC001.png

2姚建,新建控制器

新建StudentController
一般index頁面用來展示列表

using System.Web;
using System.Web.Mvc;
using MVCFirstDemo.Models;

namespace MVCFirstDemo.Controllers
{
    public class StudentController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
}

在index方法上右擊鼠標(biāo)選擇添加視圖
模板選擇List,模型類選擇Student吱殉,上下文選擇你自己的上下文(你的上下文類名)掸冤。


002.png

自動(dòng)生成:Views/Student/Index.cshtml

將查詢結(jié)果作為集合通過ViewData.Model傳到前端

 #region 學(xué)生列表
        public ActionResult Index()
        {
            ViewData.Model = dbContext.StudentSet.AsEnumerable();//將查詢結(jié)果作為集合通過ViewData.Model傳到前端
            return View();
        }
#endregion

前端將通過foreach遍歷集合中的每個(gè)對(duì)象進(jìn)行展示,具體可查看自動(dòng)生成的代碼友雳。~/Views/Student/Index.cshtml
當(dāng)前頁面(可先手動(dòng)在數(shù)據(jù)庫添加一些數(shù)據(jù)):

003.png


在StudentController中添加方法

#region Create
        public ActionResult Create()
        {
            return View();
        }

通過Create這個(gè)方法新建頁面稿湿,方法同“查”。
當(dāng)前頁面:


004.png

加下來的問題是如何將前端的數(shù)據(jù)傳到后臺(tái)押赊,并在后臺(tái)將數(shù)據(jù)保存到數(shù)據(jù)庫饺藤。
點(diǎn)擊Create之后,系統(tǒng)會(huì)默認(rèn)地去Controller中查找同名的Action進(jìn)行處理(從哪來流礁,回哪去)策精,所以此時(shí)對(duì)Create方法進(jìn)行重載,并且限制只有是HttpPost的時(shí)候進(jìn)行響應(yīng)崇棠。

[HttpPost]
        public ActionResult Create(Student student) //從前端獲取對(duì)象
        {
            dbContext.StudentSet.Add(student);
            dbContext.SaveChanges();
            return RedirectToAction("index");//返回index頁面咽袜,即list頁面
        }

此時(shí)點(diǎn)擊Edit


005.png

程序跳到另一個(gè)頁面,你們的程序會(huì)報(bào)錯(cuò)枕稀,因?yàn)镾tudentController下面還沒有Edit方法询刹,但是此時(shí)我們關(guān)注的對(duì)象是URL地址,通過URL地址我們可以看出index頁面是向Edit頁面?zhèn)鬟f了一個(gè)id萎坷,所以我們的Edit頁面可以通過這個(gè)id來獲取這個(gè)id對(duì)應(yīng)的在數(shù)據(jù)庫中的值并進(jìn)行展示凹联。之后再進(jìn)行更改。


006.png

在StudentController下面新建Edit方法

 public ActionResult Edit(int id)
        {
            //ViewData.Model = dbContext.StudentSet.FirstOrDefault(u => u.Id == id);
            ViewData.Model = dbContext.StudentSet.Find(id);//將查詢結(jié)果通過ViewData.Model傳到前端
            return View();
        }

現(xiàn)在點(diǎn)擊Edit之后已經(jīng)能夠在Edit頁面對(duì)數(shù)據(jù)進(jìn)行展示了哆档,接下來的問題是如何將用戶更改后的數(shù)據(jù)同步到數(shù)據(jù)庫蔽挠。
思想同Create,從哪來,到哪去澳淑。

[HttpPost]
        public ActionResult Edit(Student student)
        {
            dbContext.Entry(student).State = System.Data.Entity.EntityState.Modified;
            dbContext.SaveChanges();
            return RedirectToAction("Index");
            //連接到其他控制器下的方法  return RedirectToAction("Index","Home");
            //使用這個(gè)方法會(huì)報(bào)錯(cuò)  return Redirect("index");
        }

Delete & Details


        #region Details

        public ActionResult Details(int id)
        {
            ViewData.Model = dbContext.StudentSet.Find(id);
            return View();
        }
        #endregion

        #region Delete
        public ActionResult Delete(int id)
        {
            ViewData.Model = dbContext.StudentSet.Find(id);
            return View();
        }

        [HttpPost]
        public ActionResult Delete(Student student)
        {
            dbContext.Entry(student).State = System.Data.Entity.EntityState.Deleted;
            dbContext.SaveChanges();
            return RedirectToAction("Index");
        }

        #endregion

至此Asp.net Mvc的增刪改查已全部實(shí)現(xiàn)比原。
項(xiàng)目完整代碼:鏈接:http://pan.baidu.com/s/1i431ra1 密碼:5kjh

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市杠巡,隨后出現(xiàn)的幾起案子量窘,更是在濱河造成了極大的恐慌,老刑警劉巖氢拥,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚌铜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嫩海,警方通過查閱死者的電腦和手機(jī)冬殃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叁怪,“玉大人审葬,你說我怎么就攤上這事÷钍” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵成箫,是天一觀的道長(zhǎng)展箱。 經(jīng)常有香客問我,道長(zhǎng)蹬昌,這世上最難降的妖魔是什么混驰? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮皂贩,結(jié)果婚禮上栖榨,老公的妹妹穿的比我還像新娘。我一直安慰自己明刷,他們只是感情好婴栽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辈末,像睡著了一般愚争。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挤聘,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天轰枝,我揣著相機(jī)與錄音,去河邊找鬼组去。 笑死鞍陨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的从隆。 我是一名探鬼主播诚撵,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼缭裆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了砾脑?” 一聲冷哼從身側(cè)響起幼驶,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎韧衣,沒想到半個(gè)月后盅藻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畅铭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年氏淑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硕噩。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡假残,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炉擅,到底是詐尸還是另有隱情辉懒,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布谍失,位于F島的核電站眶俩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏快鱼。R本人自食惡果不足惜颠印,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抹竹。 院中可真熱鬧线罕,春花似錦、人聲如沸窃判。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袄琳。三九已至窿凤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間跨蟹,已是汗流浹背雳殊。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窗轩,地道東北人夯秃。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親仓洼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子介陶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容