using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models; namespace WebApplication1.Controllers
{
public class LeaveMsgController:Controller
{
//GET:/LeaveMsg/
public ActionResult Index()
{
//Controllers向视图传值
//原理:先存数据然后再在视图你面取出来
string s = "hello!!";
ViewData["aa"] = s; BBSDataContext bbs = new BBSDataContext();
List<student> v = (from m in bbs.student
select m).ToList();
ViewData["list"] = v; return View();
}
//删除
public ActionResult Delete()
{
//RouterData 可以获取路由上的数据
string id = RouteData.Values["id"].ToString();
//可以将一段文字返回给浏览器
//return view() 是把当前这个Action对应的视图返回给浏览器
BBSDataContext dc = new BBSDataContext();
var v = from d in dc.student
where d.stuID == int.Parse(id)
select d;
if (v.Count()>)
{
//删除
try
{
dc.student.DeleteOnSubmit(v.First());
dc.SubmitChanges();
//成功
//TempData临时数据,为下一次请求服务,在下一次请求完毕,数据清除
//本质是session存放数据
TempData["msg"] = "删除成功";
}
catch (Exception)
{
//失败
TempData["msg"] = "删除失败!!!";
} }
else
{
//没有对应的数据
TempData["msg"] = "没有找到对应的数据!!!";
}
return RedirectToAction("Index");
} //新增
public ActionResult Insert()
{
return View(); } //数据验证
public void CheckData(student s)
{
//用户名不能为空
if (s.stuName=="")
{
ModelState.AddModelError("stuName", "用户名不能为空");
}
//性别内容长度不能为空且不能大于2个字符
if (s.stuNo==""&&s.stuNo.Length<)
{
ModelState.AddModelError("stuName", "用户名不能为空或字符数大于2");
}
//正则表达式
//bool b= Regex.IsMatch(s.stuID.ToString(), "^\\{6}$");//C#正则 }
//提交新增操作
public ActionResult InsertOK()
{
//数据验证 BBSDataContext dc = new BBSDataContext();
student s = new student();
s.stuName = Request["stuName"];
s.stuID = int.Parse(Request["stuNo"]);
s.sex = Request["sex"];
s.remark = Request["remark"];
CheckData(s);
if (!ModelState.IsValid)//验证不通过
{
ViewData["stuName"] = s.stuName;
ViewData["stuNo"] = s.stuNo;
ViewData["sex"] = s.sex;
return View("Insert");
}
try
{
dc.student.InsertOnSubmit(s);
dc.SubmitChanges();
TempData["msg"] = "新增成功!!!";
return RedirectToAction("Index");
}
catch (Exception)
{
TempData["msg"] = "新增失败";
return RedirectToAction("Insert");
}
} //编辑跳转
public ActionResult Edit()
{ string id = RouteData.Values["id"].ToString();
ViewData["id"] = id;
//找id对应的数据
BBSDataContext dc = new BBSDataContext();
var v = from d in dc.student
where d.stuID == int.Parse(id)
select d;
if (v.Count()>)
{
var d = v.First();
ViewData["stuName"] = d.stuName;
ViewData["stuNo"] = d.stuNo;
ViewData["sex"] = d.sex;
ViewData["remark"] = d.remark;
return View();
}
else
{
TempData["msg"] = "没有对应的数据";
return View();
}
} //修改
public ActionResult Update()
{
string id = Request["id"];
BBSDataContext dc = new BBSDataContext();
var v = from d in dc.student
where d.stuID == int.Parse(id)
select d;
if (v.Count()>)
{
var m = v.First();
m.stuName = Request["stuName"];
m.stuNo = Request["stuNo"];
m.sex = Request["sex"];
CheckData(m);
if (!ModelState.IsValid)
{
return View("Edit");
}
try
{
dc.SubmitChanges();//提交修改
TempData["msg"] = "修改成功";
return RedirectToAction("Index");
}
catch (Exception)
{ TempData["msg"] = "修改失败!";
return RedirectToAction("Edit",new { id=id});
} }
else
{
//没有此数据
TempData["msg"] = "提交数据之前数据被其他用户已删除!!";
return RedirectToAction("Index");
}
} }
}

控制器中业务逻辑

@{
ViewBag.Title = "Index";
}
@using WebApplication1.Models <h2>学生列表</h2> @ViewData["aa"]
@TempData["msg"]
<table width="100%">
<tr><th>姓名</th><th>学号</th><th>性别</th><th>操作</th></tr>
@{
List<student> list = ViewData["list"] as List<student>; }
@{
foreach (var item in list)
{
<tr>
<td>@item.stuName</td>
<td>@item.stuID</td>
<td>@item.sex</td>
<td>@* 在MVC里提供了2个helper类,htmlHelper,UrlHelper类可以生成html代码和url代码,使用比较方便
<a href='student/delete'/@item.stuID>删除</a>
@Url.Action("delete", "student", new {id=item.stuID})*@
@Html.ActionLink("编辑", "Edit", new {id=item.stuID})|
@Html.ActionLink("删除", "Delete", new { id = item.stuID })
</td> </tr> }
}
</table>
@Html.ActionLink("新增","Insert")

Index页面

@{
ViewBag.Title = "Insert";
} <h2>新增页面</h2>
@TempData["msg"]
<p>
@Html.ValidationSummary();
</p>
@{
using (Html.BeginForm("InsertOK","LeaveMsg", FormMethod.Post))
{//创建的对象会在using语句块结束时关闭对象 <span>用户名</span> @Html.TextBox("stuName")<br />
<span>学号</span> @Html.TextBox("stuNo")<br />
<span>性别</span> @Html.TextBox("sex")<br />
<span>评论</span> @Html.TextArea("remark",null,5,30,null)<br />
<input type="submit" value="新增" />
@Html.ActionLink("返回列表", "Index"); } }

新增页面

@{
ViewBag.Title = "Edit";
} <h2>编辑信息</h2>
@TempData["msg"]
<p>
@Html.ValidationSummary();
</p>
@{
using (Html.BeginForm("Update", "LeaveMsg", FormMethod.Post))
{
@Html.Hidden("id")
<span>用户名</span> @Html.TextBox("stuName")<br />
<span>学号</span> @Html.TextBox("stuNo")<br />
<span>性别</span> @Html.TextBox("sex")<br />
<span>评论</span> @Html.TextArea("remark", null, 5, 30, null)<br />
<input type="submit" value="修改" />
@Html.ActionLink("返回列表", "Index");
} }

编辑页面

MVC简单实例的更多相关文章

  1. Maven+Eclipse+Spring MVC简单实例

    1. ToolsVersion and Preparations: Eclipse: 3.5 (eclipse-jee-galileo-win32) Maven: 2.0.11 Spring MVC ...

  2. PHP: 手把手编写自己的 MVC 框架实例教程

    1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller ...

  3. 简单实例一步一步帮你搞清楚MVC3中的路由以及区域

    我们都知道MVC 3 程序的所有请求都是先经过路由解析然后分配到特定的Controller 以及 Action 中的,为什么这些知识讲完了Controller Action Model 后再讲呢?这个 ...

  4. ASP.NET MVC 简单介绍①

    ASP.NET  MVC 简单介绍① 只做了重要描述,内容出自菜鸟教程网站内容. 目录 1布局 2HTML 帮助器 3.Razor 语法 4.添加样式 5.Layout 6. Controllers ...

  5. SpringMVC笔记——SSM框架搭建简单实例

    落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...

  6. SpringMVC简单实例(看起来有用)

    SpringMVC简单实例(看起来有用) 参考: SpringMVC 基础教程 简单入门实例 - CSDN博客http://blog.csdn.net/swingpyzf/article/detail ...

  7. ThinkPHP5.0最最最最最简单实例

    ThinkPHP5.0最最最最最简单实例 一.效果图 二.操作步骤 1.用mysql数据库建立数据库 2.按照ThinkPHP官网的指示装好ThinkPHP5.0 tp5里面的目录结构如下: 3.配置 ...

  8. Spring boot项目搭建及简单实例

    Spring boot项目搭建 Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for ...

  9. Hibernate(二)__简单实例入门

    首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...

随机推荐

  1. WordPress插件开发实例教程 - 版权插件

    说明:本教程仅限学习,高手请绕道 开发程序:WordPress 3.9-RC1 使用主题:Twenty Fourteen 在开始之前,需要注意三件事情 I.给插件取一个个性化的名字,越个性化越好,以防 ...

  2. java编程思想恶心的enum状态机示例

    下面是一个包装输入的类 package test; import java.util.Random; public enum Input { NICKEL(5) , DIME(10) , QUARTE ...

  3. php课程---初学练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. jsp\struts1.2\struts2 中文件上传(转)

    jsp\struts1.2\struts2 中文件上传 a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现c.在sturts2中实现现在把Code与大家 ...

  5. 数位dp/记忆化搜索

    一.引例 #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an  ...

  6. Json的语法及使用方法

    Json的语法及使用方法 Json(JavaScript Object Notation)对象表示标识,是一种轻量级的数据交换语言,比XML更容易解析,独立于语言和平台. 语法规则: 对象用{}保存 ...

  7. principal-component-analysis

    http://support.minitab.com/en-us/minitab/17/topic-library/modeling-statistics/multivariate/principal ...

  8. EntityFramework SQLiteCodeFirst 自动创建数据库 关闭级联删除

    外键的级联删除: 如A表中有主键idA, B表中设置外键(ForeignKey)为A表中的主键idA, 当A表中的记录被删除时, B表中所有引用此条记录的记录(即所有外键为idA的记录)将自动被删除 ...

  9. IOS移动设备处理器指令集 armv6、armv7、armv7s及arm64

    Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7s.arm64都是ar ...

  10. iOS应用架构谈 view层的组织和调用方案

    当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构. 一般也就是这两种时机会去做View层架构,基于这个时机的特殊性,我们 ...