初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序

初入码田--ASP.NET MVC4 Web应用开发之一 实现简单的登录

2016-07-29

 一、创建M002AdminDemo.cs

右键【Models】-->添加-->类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Ddup.Models
{
/// <summary>
/// 管理员模型演示
/// </summary>
public class M002AdminDemo
{
/// <summary>
/// 定义的一个查询所有管理员的方法
/// </summary>
/// <returns></returns>
public static IEnumerable<T001Admin> GetAll()
{
DdupEntities db = new DdupEntities();
return db.T001Admin;
}
/// <summary>
/// 定义的一个根据id查找对应管理员的方法
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static T001Admin GetById(int id)
{
DdupEntities db = new DdupEntities();
return db.T001Admin.FirstOrDefault(m => m.Id == id);
}
}
}

二、创建Vm002新增管理员视图模型.cs

右键【ViewModel】-->添加-->类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; //调用数据注释所需程序集
using System.ComponentModel.DataAnnotations; namespace Ddup.Models.ViewModel
{
public class Vm002新增管理员视图模型
{
//required表示必填项,ErrorMessage返回错误信息
[Required(ErrorMessage = "{0},不能为空")]
//stringlength定义输入字符的范围(max,min,error)
[StringLength(, MinimumLength = , ErrorMessage = "请输入{2}至{1}个字符")]
//定义属性在页面显示时的名称
[Display(Name = "账号")]
public string Account { get; set; } [Required(ErrorMessage = "{0},不能为空")]
[StringLength(, MinimumLength = , ErrorMessage = "请输入{2}至{1}个字符")]
[Display(Name = "密码")]
public string Password { get; set; } [Required(ErrorMessage = "{0},不能为空")]
[StringLength(, MinimumLength = , ErrorMessage = "请输入{2}至{1}个字符")]
[Display(Name = "姓名")]
public string Name { get; set; } /// <summary>
/// 定义的 Vm002新增管理员视图模型 该类的一个空构造函数
/// </summary>
public Vm002新增管理员视图模型()
{
Account = "";
Password = "";
//为了后面(Create)演示,此处设置Name初始化值为Ddup
Name = "Ddup";
} /// <summary>
/// 定义了将新增数据通过EF,插入到数据库中的方法
/// </summary>
public void Save()
{
using (DdupEntities db = new DdupEntities())
{
var t001 = new T001Admin()
{
Account=this.Account,
Password=this.Password,
Name=this.Name
};
db.T001Admin.Add(t001);
db.SaveChanges();
}
}
}
}

三、创建C02AdminController.cs控制器

右键【Controllers】-->添加控制器-->空的MVC5控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; using Ddup.Models;
using Ddup.Models.ViewModel; namespace Ddup.Controllers
{
public class C02AdminController : Controller
{
/// <summary>
/// 使用GetAll()方法,返回所有管理员信息
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
return View(M002AdminDemo.GetAll());
} /// <summary>
/// 使用GetById()方法,通过传递的id来获取对应管理员的详细信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult Details(int id)
{
var model = M002AdminDemo.GetById(id);
if (model == null) return View("Error");
return View(model);
} /// <summary>
/// 定义get的新增action,调用 Vm002新增管理员视图模型 的空构造函数,初始化
/// </summary>
/// <returns></returns>
public ActionResult Create()
{
//通过此action,后面再新增页面Name的初始值会和 Vm002新增管理员视图模型 的空构造函数中
//所定义的初始化值一样。
return View(new Vm002新增管理员视图模型());
} /// <summary>
/// 定义的post的新增action,在View中表单提交方式为POST时,将通过此action执行操作
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
public ActionResult Create(Vm002新增管理员视图模型 model)
{
//try,catch异常捕获
try
{
//判断模型状态是否有效,此处根据在 Vm002新增管理员视图模型 中对各个属性的数据注释来判断,对应输入的值是否有效
if (ModelState.IsValid)
{
//调用 Vm002新增管理员视图模型 中所定义的保存方法Save()
model.Save();
//return View("Index");
//return Redirect("~/C02Admin/Index");
return RedirectToAction("Index");
}
}
catch (Exception ex)
{
//将捕获的异常信息添加到""中,或者注明关键字(如:"Name"),将来在View中对应输出错误信息
ModelState.AddModelError("", ex.Message);
}
return View(model);
} public ActionResult Edit(int id)
{
var model = M002AdminDemo.GetById(id);
if (model == null) return View("Error"); //前台与后台之间的传值方法之一ViewData
//将通过id找到的模型数据,传递与视图数据关联的模型
ViewData.Model = model;
return View(model);
} [HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
if (ModelState.IsValid)
{
DdupEntities db = new DdupEntities();
var model = db.T001Admin.FirstOrDefault(m => m.Id == id); #region 1.0 更新model的关键字字段值(所有) string[] strArr = collection.AllKeys;
TryUpdateModel(model, strArr); #endregion #region 2.0 更新model的关键字字段值(选择要更新关键字字段) //TryUpdateModel(model, new string[] {"Account","Password","Name" });
#endregion db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (Exception ex)
{
ModelState.AddModelError("", ex.Message);
}
return View();
} public ActionResult Delete(int id)
{
try
{
DdupEntities db = new DdupEntities(); ;
var t001 = db.T001Admin.FirstOrDefault(m => m.Id == id);
if (t001 != null)
{
db.T001Admin.Remove(t001);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (Exception ex)
{
ModelState.AddModelError("", ex.Message);
}
return View();
}
}
}

四、创建对应的视图

添加返回所有管理员的Index视图

添加返回对应id的管理员Details视图

添加新增视图

添加编辑视图

五、测试下我们所创建的增删改查功能吧

本人属于初学者,如果有何不足,还请见谅,也希望大家多多给意见,谢谢!!!

=================================================================================================

作者:程程程
出处:http://rcddup.cnblogs.com
本文由程程程原创,并发布到博客园,欢迎转载,但必须在文章页面明显位置写明作者和出处,非常感谢!

初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查的更多相关文章

  1. 初入码田--ASP.NET MVC4 Web应用开发之一 实现简单的登录

    初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查 2016-07-24 一.创建T4模板,建 ...

  2. 初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序

    初入码田--ASP.NET MVC4 Web应用开发之一  实现简单的登录 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查 2016-07-29 在此之前,需要一台电脑( ...

  3. Web API开发实例——对产品Product进行增删改查

    1.WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务.ASP.NET Web API 是一种用于在 .NET ...

  4. 通过flask实现web页面简单的增删改查bootstrap美化版

    通过flask实现web页面简单的增删改查bootstrap美化版 项目目录结构 [root@node1 python]# tree -L 2 . ├── animate.css ├── fileut ...

  5. 通过flask实现web页面简单的增删改查

    通过flask实现web页面简单的增删改查 # 1.后台程序falsk_web01.py #coding:utf-8 from flask import Flask,render_template,r ...

  6. Java web 简单的增删改查程序(超详细)

    就是简单的对数据进行增删改查.代码如下: 1.bean层:用来封装属性及其get set方法 toString方法,有参构造方法,无参构造方法等. public class Bean { privat ...

  7. mysql实现简单的增删改查,放入xmapp自带数据库中

    1.mysql概念:SQL-Structured Query Language,是一种特殊的语言,专用于操作关系型数据库服务器中的数据,所有的SQL语句分为四类: (1)DDL(2)DQL(3)DML ...

  8. spring boot web开发 简单的增删改查和spring boot 自带的Junit测试 案例

    创建 web项目 配置pom.xml文件   ------相当于jar包 配置application.yml -----配置文件(spring数据库连接.server服务.logging日志等) 创建 ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查

    系列目录 前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 回顾上一节的解决方案,我们看出了解决方案中类库的关系 这里要说明一点MVC!=三层 他们大约是这样的一种关系 代码实现 上 ...

随机推荐

  1. 5249: [2018多省省队联测]IIIDX

    5249: [2018多省省队联测]IIIDX 链接 分析: 贪心. 将给定的权值从大到小排序,从第一个往后挨个赋值,考虑第i个位置可以赋值那些树.首先满足前面必须至少有siz[i]个权值没选,如果存 ...

  2. 4008: [HNOI2015]亚瑟王

    4008: [HNOI2015]亚瑟王 链接 分析: 根据期望的线性性,直接求出每张牌出现的概率,最后乘以攻击力就是答案. 每张牌出现的概率只与它前面的牌有关,与后面的没有关系,于是按顺序考虑每张牌. ...

  3. Kubernetes学习之路(七)之Coredns和Dashboard二进制部署

    一.CoreDNS部署 在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. (1)编辑coredns.yaml文 ...

  4. JS获取对象“属性”的方法

    var testObj= new Object(); testObj.name = "shangguan"; testObj.age= ; testObj.action = fun ...

  5. Python_sklearn机器学习库学习笔记(七)the perceptron(感知器)

    一.感知器 感知器是Frank Rosenblatt在1957年就职于Cornell航空实验室时发明的,其灵感来自于对人脑的仿真,大脑是处理信息的神经元(neurons)细胞和链接神经元细胞进行信息传 ...

  6. restful framework之频率组件

    一.频率简介 为了控制用户对某个url请求的频率,比如,一分钟以内,只能访问三次 二.自定义频率类.自定义频率规则 自定义的逻辑 #(1)取出访问者ip # (2)判断当前ip不在访问字典里,添加进去 ...

  7. 【免费培训】腾讯WeTest&TesterHome WorkShop | 一起学压测

    2019年,中国移动软件市场仍呈现快速增长趋势,移动新生态孕育而生.而移动软件质量问题越发受到用户的关注,成为用户体验的关键因素.目前移动软件测试人才稀缺,而性能测试作为一项高门槛.高技术的测试能力, ...

  8. js简单时间比较的方法(转)

    //时间比较(yyyy-MM-dd) function compareDate(startDate, endDate) {   var arrStart = startDate.split(" ...

  9. flask的继承和包含

    为了方便使用重复的页面,我们也可以使用继承模板.还有包含模板,一般使用包含,俩个都不是很好理解,我只是用完的理解简单介绍一下,他们的用法打不相同,却又有类似之处 我们访问页面的时候在最上边会有导航的信 ...

  10. 执行sh脚本报“/usr/bin/env: "sh\r": 没有那个文件或目录”错误

    出现这个错误的原因是出错的语句后面多了“\r”这个字符,换言之,脚本文件格式的问题,我们只需要把格式改成unix即可: vi xx.sh :set ff :set ff=unix :wq!