折腾了两天搞出来,但原理性的东西还不是很懂,废话不多说上图上代码

然后右键models,新建一个数据模型

注意我添加命名为lianxi

添加后如上

接下来在controllers添加控制器还有在Views中添加视图

注意控制器lianxi和视图的名字要一致,然后视图我是添加了3个分别是Index,insert,Modify,在控制器里分别有三个对应的函数

每当用URL访问视图时,他就调用了controllers对应的方法,例如

jiaEntities 就是建立模式时那个数据链接的名字

       jiaEntities db = new jiaEntities();
        public ActionResult Index()
        {
            //查询
            List<client> list = (from c in db.client select c).ToList();
            ViewData["DataList"] = list;
            return View();
        }

Views里的Index里的代码如下

Beginform相当于我们平常写HTNML里的form

@Html.ActionLink就是超链接,然后第一个参数为链接的文字表示,第2个参数为调用的控制器方法,第3个为传值,当点击某个链接,就把这个链接对于的id赋值给Cid

ViewData["DataList"] 数据就是控制器中Index传过来的,进过foreach循环得到下面结果

下面是控制器中"修改"功能的代码

        [HttpGet]
        public ActionResult Modify()
        {
            int id = Convert.ToInt32(Request.QueryString["Cid"]);
            client c1 = (from c in db.client where id == c.id select c).SingleOrDefault();
            return View(c1);
        }
        [HttpPost]
        public ActionResult Modify(client model)
        {
            client c = db.client.Where(c1 => c1.id == model.id).ToList().FirstOrDefault();
            c.name = model.name.Trim();
            db.SaveChanges();
            db.Configuration.ValidateOnSaveEnabled = true; 
            return RedirectToAction("Index", "lianxi");
        }
[httpGet]我的理解就是运行时默认调用的方法,直接从服务器获取

[httpPost]就是向服务器发送时调用的方法

所以当点击修改时就会执行第一个方法([httpGet])
点击第一项的修改之后的界面:

这个页面的代码如下

@model mvclianxi.Models.client
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Modify</title>
</head>
<body>
    @using (Html.BeginForm("Modify","lianxi",FormMethod.Post))
    {
        <table>
            <tr>
                <td>@Html.HiddenFor(model=>model.id)</td>
                <td>@Html.TextBoxFor(model => model.name)</td>
                <td><input type="submit" value="确认"/>@Html.ActionLink("<<<返回","Index","lianxi")</td>
            </tr>
        </table>
     }
</body>
</html>
@Html.HiddenFor(model=>model.id)这句去掉的话会出错,具体原因不详(ˇˍˇ) 

model就是从第一个modify还是传过来的,刚开始我也晕了...

submit的按钮就是提交这个表单,提交到哪?就是提交到下面这个修改函数了,为什么会到这?因为这个 @using (Html.BeginForm("Modify","lianxi",FormMethod.Post))

@using (Html.BeginForm("Modify","lianxi",FormMethod.Post))
@using (Html.BeginForm("Modify","lianxi",FormMethod.Post))
        public ActionResult Modify(client model)
        {
            client c = db.client.Where(c1 => c1.id == model.id).ToList().FirstOrDefault();
            c.name = model.name.Trim();
            db.SaveChanges();
            db.Configuration.ValidateOnSaveEnabled = true; 
            return RedirectToAction("Index", "lianxi");
        }

上面的函数就是用linq语句修改数据库...

接下来。。。就是添加的页面了,其实跟修改的原理都差不多,这里就不多说了直接粘代码
控制器里的:
   [HttpGet]
        public ActionResult insert()
        {
            return View();
        }

[HttpPost]
        public ActionResult insert(client model) //这个id是通过超链接带过来的
        {
            try
            {
                client c = new client();
                c.id = model.id;
                c.money = model.money;
                c.name = model.name ;
                db.client.Add(c);
                db.SaveChanges();
                return RedirectToAction("Index", "lianxi");
            }
            catch (Exception)
            {
                //指定对应跳转的视图Test下的Test.cshtml文件
                return RedirectToAction("Test", "Test");
                //return Content("添加失败" + ex.Message);
            }
        }

视图里的有两个地方
1.Index里的
    <td>@Html.ActionLink("添加", "insert")</td>

2.insert里的

@{
    ViewBag.Title = "insert";
}

@model  mvclianxi.Models.client
<h2>insert</h2>
<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        @using (Html.BeginForm("Modify","lianxi",FormMethod.Post))
        {
        <table>
            <tr>
                <td>@Html.TextBoxFor(model=>model.id)</td>
                <td>@Html.TextBoxFor(model=>model.name)</td>
                <td>@Html.TextBoxFor(model=>model.money)</td>
                <td><input type="submit" value="添加"/>@Html.ActionLink("返回", "index", "lianxi")</td>
                </tr>
            </table>
        }
    </body>
    </html>

这里不小心用了他的母版页,也不影响吧,就没改了

删除:
视图中<td>@Html.ActionLink("删除", "Remove", new { Cid=a.id })</td>

控制器中
public ActionResult Remove() //这个id是通过超链接带过来的
        {
            try
            {
                //需要一个实体对象参数
                //db.Customers.Remove(new Customer() {CustomerNo = id });
                //1,创建要删除的对象
                int id = Convert.ToInt32(Request.QueryString["Cid"]);
                client c1 = (from c in db.client where c.id == id select c).SingleOrDefault();
                db.client.Remove(c1);
                db.SaveChanges();
                return RedirectToAction("Index", "lianxi");
            }
            catch (Exception)
            {
                //指定对应跳转的视图Test下的Test.cshtml文件
                return RedirectToAction("Test", "Test");
                //return Content("删除失败" + ex.Message);
            }
        }

到此结束。。。

asp.net MVC最简单的增删查改!(详)的更多相关文章

  1. nodejs连接mysql并进行简单的增删查改

    最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs ...

  2. knockout+MVC+webapi+sqlserver完成增删查改

    快过年了,公司的事情较少,想着开始学习点新东西.这段时间一个项目用到了mvc和webapi,然后一直对knockout比较感兴趣,就想着用这个框架做一个小实例.数据库采用的是sqlserver.话不多 ...

  3. Java连接MySQL数据库及简单的增删查改操作

    主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...

  4. mybatis实现简单的增删查改

    接触一个新技术,首先去了解它的一些基本概念,这项技术用在什么方面的.这样学习起来,方向性也会更强一些.我对于mybatis的理解是,它是一个封装了JDBC的java框架.所能实现的功能是对数据库进行增 ...

  5. EF简单的增删查改

    Add /// <summary> /// /// </summary> public void Add() { TestDBEntities2 testdb = new Te ...

  6. 一般处理程序+htm C#l简单的增删查改

    首先引用两个文件一个dll: 数据库表已创建 首先编写数据读取部分 /// <summary> /// 查询 /// </summary> /// <param name ...

  7. RavenDb学习(二)简单的增删查改

    在上一节当中已经介绍了RavenDb的文档设计模式,这一节我们要具体讲一讲如何使用api去访问RavenDb .连接RavenDb var documentStore = new DocumentSt ...

  8. Hibernate 的事物简单的增删查改

    Hibernate 是一个优秀的ORM框架体现在: 1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象.建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管 ...

  9. django与mysql实现简单的增删查改

    模型定义 from django.db import models class Grades(models.Model): g_name = models.CharField(max_length=2 ...

随机推荐

  1. EOF与feof

    在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件.在文本文件中,数据都是 ...

  2. C语言中最常用标准库函数

    标准头文件包括: <asset.h>      <ctype.h>       <errno.h>       <float.h> <limits ...

  3. shell脚本,如何破解字符串对应的md5sum前的RANDOM对应数字?

    已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果,请破解这些字符串对应的md5sum前的RANDOM对应数字?[root@localhost md5]# cat ...

  4. 初涉最小表示法&&bzoj1398: Vijos1382寻找主人 Necklace

    把最小表示法的坑填了 Description 给定两个项链的表示,判断他们是否可能是一条项链. Input 输入文件只有两行,每行一个由0至9组成的字符串,描述一个项链的表示(保证项链的长度是相等的) ...

  5. (62)zabbix客户端自动注册

    1. 概述 上一篇内容<zabbix自动发现配置>,大概内容是zabbix server去扫描一个网段,把在线的主机添加到Host列表中. 我们本篇内容与上篇相反,这次是Active ag ...

  6. Windows 10 Mac 为Vs Code配置C/C++环境

    2019-06-10 更新: 加上Mac版本的Vscode配置文件 0.前言 实现效果:右键一键编译运行C/C++文件 Vs code的代码效果很好看,也很轻量,所以想为Vs Code配置C/C++环 ...

  7. Linux基础学习-Docker学习笔记

    Docker安装 1 官方网站访问速度很慢,帮助文档 2 国内中文网站,帮助文档 [root@qdlinux ~]# yum remove docker \ docker-client \ docke ...

  8. MySql压缩版安装及避免1055错误和msvcp120.dll丢失

    MySql压缩版安装及避免1055错误和msvcp120.dll丢失 MySQL压缩版的安装快速方便,5.7及最新的8版本安装方式大致相同. 在使用group by分组时,可能会遇到1055错误. 另 ...

  9. linux中mysql自带同步

    今天打算给一个做主备web服务器.考虑到数据库的同步,现在自己本地虚拟机做个实验. 经过慎重考虑(其实就是参考了下论坛大家的看法). 最后决定用mysql自带的同步设置. 话不多说 配置过程如下.

  10. laravel的安装与启动

    今天,我就来给大家分享下laravel的安装 https://pkg.phpcomposer.com 这是官网的中国镜像 第一步: 点链接进来执行下面的三条语句 执行完后,查看下当前目录底下有个  c ...