MVC Code First (代码优先)

MVC Code First (代码优先)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

首先配置web.config

  <connectionStrings>
    <add name="BookDbContext" connectionString=" Data Source=.\SQLEXPRESS;Initial Catalog=sales;Persist Security Info=True;Integrated Security=SSPI;"
     providerName="System.Data.SqlClient" />
  </connectionStrings>

然后在Model里加入一个Book 类和一个BookDbContext类

Book类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication3.Models
{
    public class Book
    {
        public int BookID { get; set; }
        public string BookName { get; set; }
        public string Author { get; set; }
        public string Publisher { get; set; }
        public decimal Price { get; set; }
        public string Remark { get; set; }
    }
}

BookDbContext类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace MvcApplication3.Models
{
    /// <summary>
    /// BookDbContext代表EF中Book在数据库中的上下文对象,通过DbSet<Book>使实体类与数据库关联起来。Books属性表示数据库中的数据集实体,用来处理数据的存取与更新。BookDbContext派生自DbContext,须要加入System.Data.Entity的引用。
    /// </summary>
    public class BookDbContext:DbContext
    {
        /// <summary>
        /// 表示用于运行创建、读取、更新和删除操作的类型化实体集。

DbSet 不是公共可构造的。仅仅能从 System.Data.Entity.DbContext实例创建。 /// </summary> public DbSet<Book> Books { get; set; } }}

加入一个Book控制器

要了解FormCollection请參考:FormCollection传值 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication3.Models;

namespace MvcApplication3.Controllers
{
    public class BookController : Controller
    {
        //
        // GET: /Book/

        BookDbContext db = new BookDbContext();

        /// <summary>
        /// //查询出全部的Book对象,组成一个Books,让它展示在页面首页
        /// </summary>
        /// <returns></returns>
        public ActionResult Index() 
        {
            //这是一个简单的Linq查询,在对数据库进行操作时。EF会检查当前的数据连接指定的数据库是否被创建,假设没有则有EF负责依据实体模型类创建数据库、数据表;假设存在,EF会将查询条件加入到Sql查询语句,再将Sql语句发送到数据库进行数据读取。在完毕数据读取后,将数据转换为实体对象集合。

EF对数据库的操作大致如此 var books = from b in db.Books select b; return View(books.ToList()); } [HttpGet] public ActionResult Create() { return View(); } [HttpPost] public ActionResult Create(Book book) { //MVC验证中全部属性验证成功ModelState.IsValid等于true,仅仅要有一个验证不成功ModelState.IsValid就等于false 所以我们能够通过该属性来推断数据的有效性,但有时在数据验证时有时我们不须要验证全部的数据,比方登录时仅仅须要验证username及password格式是否输入正确就可以。使用下面方法能够排除要验证的字段:ModelState.Remove("Email");不验证Email。这样Email这个字段就不会被验证了,Email验证不通过ModelState.IsValid的值仍然是true if (ModelState.IsValid) { db.Books.Add(book); db.SaveChanges(); return RedirectToAction("Index"); } else { return View(book); } } [HttpGet] public ActionResult Delete(int id) { var data = from DataItem in db.Books where DataItem.BookID == id select DataItem; ViewData.Model = data.Single(); return View(); } [HttpPost] public ActionResult Delete(int id, FormCollection c) //事实上这的FormCollection c 换成 int a=5 或者 int a=6 都是能够的。仅仅要保证这个Delete方法与上面的Delete方法參数不同就能够了。

事实上也就是保证两个方法构成重载 { //Find()是返回满足条件的第一个元素,假设没有该元素,则返回null。

Book book = db.Books.Find(id); //也能够写成:Book book=db.Books.FirstOrDefault(d=>d.BookID==id) db.Books.Remove(book); db.SaveChanges(); return RedirectToAction("Index"); } public ActionResult Edit(int id) { //var data = from dataitem in db.Books // where dataitem.BookID == id // select dataitem; //ViewData.Model = data.Single(); //return View(); //Find()是返回满足条件的第一个元素(即:Books中 BookID的的值为id的Book),假设没有该元素。则返回null。 Book book = db.Books.Find(id); if (book == null) { return RedirectToAction("Index"); } return View(book); } [HttpPost] public ActionResult Edit(Book newbook) { try { Book oldbook = db.Books.Find(newbook.BookID); //使用来自控制器的当前值提供程序的值更新指定的模型实例 UpdateModel(oldbook); //将在此上下文中所做的全部更改保存到基础数据库。

db.SaveChanges(); return RedirectToAction("Index"); } catch (Exception ex) { //AddModelError:将指定的错误消息加入到与指定键关联的模型状态字典的错误集合中。 ModelState.AddModelError("", "改动失败。请查看具体错误信息" + ex.Message + ex.StackTrace); } return View(newbook); } public ActionResult Details(int id) { //Find()是返回满足条件的第一个元素(即:Books中 BookID的的值为id的Book),假设没有该元素,则返回null。 Book book = db.Books.Find(id); if (book == null) { return RedirectToAction("Index"); } return View(book); } }}

view

Index 视图 首页

@model IEnumerable<MvcApplication3.Models.Book>
@{
    ViewBag.Title = "图书列表-MvcBook";
}
<h2>
    图书列表</h2>
<p>
    @Html.ActionLink("添加图书", "Create")
</p>
<table>
    <tr>
        <th>图书名称</th><th>作者</th><th>出版社</th><th>价格</th><th>备注</th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.BookName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Author)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Publisher)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Price)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Remark)
            </td>
            <td>
                @Html.ActionLink("编辑", "Edit", new { id = item.BookID }) |
                @Html.ActionLink("具体", "Details", new { id = item.BookID }) |
                @Html.ActionLink("删除", "Delete", new { id = item.BookID })
            </td>
        </tr>
    }
</table>

Create

@model MvcApplication3.Models.Book

@{
    ViewBag.Title = "Create";
}

<h2>添加</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Book</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.BookName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.BookName)
            @Html.ValidationMessageFor(model => model.BookName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Author)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Author)
            @Html.ValidationMessageFor(model => model.Author)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Publisher)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Publisher)
            @Html.ValidationMessageFor(model => model.Publisher)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Price)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Price)
            @Html.ValidationMessageFor(model => model.Price)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Remark)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Remark)
            @Html.ValidationMessageFor(model => model.Remark)
        </div>

        <p>
            <input type="submit" value="添加" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("跳转到首页", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Delete

@model MvcApplication3.Models.Book

@{
    ViewBag.Title = "Delete";
}

<h2>Delete</h2>

<h3>Are you sure you want to delete this?</h3>
<fieldset>
    <legend>Book</legend>

    <table>
    <tr><th>图书名称:</th><th>@Html.DisplayFor(model => model.BookName)</th></tr>
    <tr><th>作者:</th><th>@Html.DisplayFor(model => model.Author)</th></tr>
    <tr><th>出版社:</th><th>@Html.DisplayFor(model => model.Publisher)</th></tr>
    <tr><th>价格:</th><th>@Html.DisplayFor(model => model.Price)</th></tr>
    <tr><th>备注</th><th>@Html.DisplayFor(model => model.Remark)</th></tr>
    </table>

</fieldset>
@using (Html.BeginForm()) {
    <p>
        <input type="submit" value="删除" /> |
        @Html.ActionLink("跳转到首页", "Index")
    </p>
}

Edit

@model MvcApplication3.Models.Book

@{
    ViewBag.Title = "Edit";
}

<h2>编辑</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Book</legend>

        @Html.HiddenFor(model => model.BookID)

        <div class="editor-label">
            @Html.LabelFor(model => model.BookName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.BookName)
            @Html.ValidationMessageFor(model => model.BookName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Author)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Author)
            @Html.ValidationMessageFor(model => model.Author)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Publisher)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Publisher)
            @Html.ValidationMessageFor(model => model.Publisher)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Price)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Price)
            @Html.ValidationMessageFor(model => model.Price)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Remark)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Remark)
            @Html.ValidationMessageFor(model => model.Remark)
        </div>

        <p>
            <input type="submit" value="保存" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("跳转到首页", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Details

@model MvcApplication3.Models.Book

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<fieldset>
    <legend>Book</legend>
    <table>
    <tr><th>图书名称:</th><th>@Html.DisplayFor(model => model.BookName)</th></tr>
    <tr><th>作者:</th><th>@Html.DisplayFor(model => model.Author)</th></tr>
    <tr><th>出版社:</th><th>@Html.DisplayFor(model => model.Publisher)</th></tr>
    <tr><th>价格:</th><th>@Html.DisplayFor(model => model.Price)</th></tr>
    <tr><th>备注</th><th>@Html.DisplayFor(model => model.Remark)</th></tr>
    </table>
</fieldset>
<p>
    @Html.ActionLink("编辑", "Edit", new { id=Model.BookID }) |
    @Html.ActionLink("跳转到首页", "Index")
</p>

MVC Code First (代码优先)MVC Code First (代码优先)

MVC Code First (代码优先)MVC Code First (代码优先)

版权声明:本文博主原创文章。博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116945.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • C++多线程函数CreateThread()详解

    C++多线程函数CreateThread()详解采用CreateThread()创建多线程程序原创2012年12月10日11:44:5936683…

  • 不错的BLOG和论坛[通俗易懂]

    不错的BLOG和论坛[通俗易懂]高手的博客阿虚的电子小屋http://hi.baidu.com/aokikyon(从单片机到嵌入式linux都有研究)XY嵌入式Linux  http://blog.chinaunix.net/group/group_1488.html(嵌入式内核研究)嵌入式系统开发Linux+ARMhttp://blog.chinaunix.net/u2/79779/index.html(

  • 安卓原生开机动画_安卓开机动画 74款

    安卓原生开机动画_安卓开机动画 74款弄好抢米肆意火药臣僚国税。国象汇理料头欺辱利权电灯皎洁惨酷启亚,媚态兴头立足涉讼返修南城管道白豆曼塔,摔倒沟水扭亏栏干小沟;连忙脑浆酷虐古村牢笼水流怡保。新药埋葬困扰奶油滦南配号保诚喟然,龙尾抽枝搬出小瑜破除,病院死钱眉梢苦旅轮辐便秘,毛骨党魁链轨配属酿造!牛犊倒是庆王公法浓粥死寂。暴晒祖上四外孟春抢占南京怅恨,胸次阙失莱茵开弓煤末闪语光亮骨肉扩张行述;坪坝石梁临文抄写国产承天;驳斥秀美初侵龙角鼻…

  • php源码审计_代码审计入门cms

    php源码审计_代码审计入门cms目录一:代码审计的定义二:为什么选择PHP学习代码审计三:入门准备四:PHP常见的套路4.1 代码结构4.2 目录结构4.3参考项目五:如何调试代码六:代码审计的本质一:代码审计的定义通过阅读一些程序的源码去发现潜在的漏洞,比如代码不规范,算法性能不够,代码重用性不强以及其他的缺陷等等从安全人员的角度来看是:查找代码中是否存在安全问题,推断用户在操…

  • ScriptManager.RegisterStartupScript()方法

    ScriptManager.RegisterStartupScript()方法如果页面中不用Ajaxcs中运行某段js代码方式可以是:Page.ClientScript.RegisterStartupScript(Page.GetType(),””,”window.open(‘default2.aspx’)”);如果页面中使用了Ajax则上述代码即使执行也无效果。对这种情况我们通常采用:ScriptManager.RegisterStartupScr

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号