
关于MVC5和Entity Framework的教程源码
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本教程源码旨在帮助开发者掌握ASP.NET MVC5框架及Entity Framework的核心技术与实践应用,适合初学者快速上手。
创建了一个使用实体框架和SQL Server Express LocalDB来存储和显示数据的简单Web应用程序,并实现了基本的CRUD操作及排序、筛选、分页与分组功能。
以下是代码:
```csharp
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using ContosoUniversity.DAL; // 数据访问层引用
using ContosoUniversity.Models;
namespace ContosoUniversity.Controllers {
public class StudentsController : Controller {
private SchoolContext db = new SchoolContext();
public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page) {
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? name_desc : ;
ViewBag.DateSortParm = sortOrder == Date ? date_desc : Date;
if (searchString != null){
page = 1;
} else {
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
var studentsQuery = from s in db.Students select s;
if (!string.IsNullOrEmpty(searchString)) {
studentsQuery = studentsQuery.Where(s => s.LastName.Contains(searchString) || s.FirstMidName.Contains(searchString));
}
switch (sortOrder){
case name_desc:
studentsQuery = studentsQuery.OrderByDescending(s => s.LastName);
break;
case Date:
studentsQuery = studentsQuery.OrderBy(s => s.EnrollmentDate);
break;
case date_desc:
studentsQuery = studentsQuery.OrderByDescending(s => s.EnrollmentDate);
break;
default:
// 默认排序为按姓名升序
studentsQuery = studentsQuery.OrderBy(s => s.LastName);
}
int pageSize = 6;
int pageNumber = (page ?? 1);
return View(studentsQuery.ToPagedList(pageNumber, pageSize));
}
public ActionResult Details(int? id) {
if(id == null){
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Student student = db.Students.Find(id);
if(student == null){
return HttpNotFound();
}
return View(student);
}
// 添加学生的视图和POST操作
public ActionResult Create() {
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = LastName,FirstMidName,EnrollmentDate)] Student student) {
try{
if(ModelState.IsValid){
db.Students.Add(student);
db.SaveChanges();
return RedirectToAction(Index);
}
}catch(DataException){ // 数据异常处理
ModelState.AddModelError(, 无法保存更改。请重试,如问题持续,请联系系统管理员。);
}
return View(student);
}
public ActionResult Edit(int? id) {
if(id == null){
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Student student = db.Students.Find(id);
if (student == null){
return HttpNotFound();
}
return View(student);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = ID,LastName,FirstMidName,EnrollmentDate)] Student student) {
if(ModelState.IsValid){
db.Entry(student).State = EntityState.Modified;
try{
db.SaveChanges();
return RedirectToAction(Index);
}catch(DataException){ // 数据异常处理
ModelState.AddModelError(, 无法保存更改。请重试,如问题持续,请联系系统管理员。);
}
}
return View(student);
}
public ActionResult Delete(int? id) {
if(id == null){
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Student student = db.Students.Find(id);
if (student == null){
return HttpNotFound();
}
return View(student);
}
[HttpPost, ActionName(Delete)]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id) {
Student student = db.Students.Find(id);
db.Students.Remove(student);
try{
db.SaveChanges();
return RedirectToAction(Index);
}catch(DataException){ // 数据异常处理
ModelState.AddModelError(, 删除失败。请重试,如问题持续,请联系系统管理员。);
}
return View(student);
}
protected override void Dispose(bool disposing) {
if(disposing){
db.Dispose();
}
base.Dispose(disposing);
}
}
}
```
这个控制器类处理学生数据的创建、读取、更新和删除操作,同时支持排序与分页功能。
全部评论 (0)


