个性化阅读
专注于IT技术分析

asp.net mvc脚手架

它是ASP.NET的一个特性,它允许我们快速生成函数代码。它也被称为代码生成器框架。它预装在Visual Studio 2013和更高版本中。

要创建基本的CRUD应用程序,搭建是最佳选择。它减少了时间,产生干净的代码。在这里,我们使用scaffolding来开发CRUD应用程序。

ASP.NET的CRUD的例子

这个示例包含以下几个步骤。

创建新项目

选择文件菜单从菜单栏和选择新->项目。我们也可以使用快捷键Ctrl+Shift+N来创建一个新项目。

这将弹出一个包含项目的窗口。我们选择ASP.NET的Web应用程序。

单击ok后,它会弹出一个新的模板窗口。在这里,我们选择MVC模板,用于创建MVC web应用程序。

点击确定,然后它将创建一个项目,并显示一个进度条,如下所示。

CRUD项目结构

我们可以通过按Ctrl+F5来运行这个应用程序。它将为浏览器生成一个默认的索引页,如下所示。

为了创建完整的crud,我们需要在项目中添加模型、视图和控制器。这里,我们创建一个处理数据的模型。

创建一个新模型

我们正在项目的Models文件夹中创建一个Student模型。右键单击Models文件夹并选择add->类,将弹出一个对话框。通过提供名称来创建类。

这个模型类有一些源代码,可以像下面这样修改它的代码。

/ / Student.cs

using System;  
using System.Collections.Generic;  
using System.ComponentModel.DataAnnotations;  
using System.Linq;  
using System.Web;  
namespace CrudExample.Models  
{  
public class Student  
    {  
public int ID { get; set; }  
        [Required]  
public string Name { get; set; }  
        [Required]  
        [EmailAddress]  
public string Email { get; set; }  
        [Required]  
public string Contact { get; set; }  
    }  
}  

创建一个上下文类

我们在Models文件夹中创建了另一个类,它用于与实体框架通信并执行数据库操作。这个类继承了DbContext类。

/ / StudentRecord.cs

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Data.Entity.ModelConfiguration.Conventions;  
using System.Data.Entity;  
namespace CrudExample.Models  
{  
public class StudentRecord : DbContext  
    {  
public DbSet<Student> Students { get; set; }  
protected override void OnModelCreating(DbModelBuilder modelBuilder)  
        {  
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();  
        }  
    }  
}  

将脚手架添加到项目中

右键单击Controllers文件夹并添加脚手架,就像我们在屏幕截图中所做的那样。

它将弹出以下对话框。选择带有实体框架的控制器。

然后点击添加按钮。它请求模型和上下文名称。填写条目并单击ok。

单击add按钮后,它将创建一个StudentsController控制器和一个Students文件夹。学生文件夹包含每个CRUD操作的web页面。

/ / StudentsController.cs

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 CrudExample.Models;  
namespace CrudExample.Controllers  
{  
public class StudentsController : Controller  
    {  
private StudentRecord db = newStudentRecord();  
// GET: Students  
public ActionResult Index()  
        {  
return View(db.Students.ToList());  
        }  
// GET: Students/Details/5  
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);  
        }  
// GET: Students/Create  
public ActionResult Create()  
        {  
return View();  
        }  
// POST: Students/Create  
// To protect from overposting attacks, please enable the specific properties you want to bind to, for   
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.  
        [HttpPost]  
        [ValidateAntiForgeryToken]  
public ActionResult Create([Bind(Include = "ID,Name,Email,Contact")] Student student)  
        {  
if (ModelState.IsValid)  
            {  
                db.Students.Add(student);  
                db.SaveChanges();  
return RedirectToAction("Index");  
            }  
return View(student);  
        }  
// GET: Students/Edit/5  
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);  
        }  
// POST: Students/Edit/5  
// To protect from overposting attacks, please enable the specific properties you want to bind to, for   
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.  
        [HttpPost]  
        [ValidateAntiForgeryToken]  
public ActionResult Edit([Bind(Include = "ID,Name,Email,Contact")] Student student)  
        {  
if (ModelState.IsValid)  
            {  
                db.Entry(student).State = EntityState.Modified;  
                db.SaveChanges();  
return RedirectToAction("Index");  
            }  
return View(student);  
        }  
// GET: Students/Delete/5  
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);  
        }  
// POST: Students/Delete/5  
        [HttpPost, ActionName("Delete")]  
        [ValidateAntiForgeryToken]  
public ActionResult DeleteConfirmed(int id)  
        {  
Student student = db.Students.Find(id);  
            db.Students.Remove(student);  
            db.SaveChanges();  
return RedirectToAction("Index");  
        }  
protected override void Dispose(bool disposing)  
        {  
if (disposing)  
            {  
                db.Dispose();  
            }  
base.Dispose(disposing);  
        }  
    }  
}  

视图中的Students文件夹包含以下文件。

Index.cshtml文件包含以下代码。

/ / Index.cshtml

@model IEnumerable<scaffoldingTest.Models.Student>  
@{  
    ViewBag.Title = "Index";  
}  
<h2>Index</h2>  
<p>  
    @Html.ActionLink("Create New", "Create")  
</p>  
<table class="table">  
<tr>  
<th>  
            @Html.DisplayNameFor(model => model.Name)  
</th>  
<th>  
            @Html.DisplayNameFor(model => model.Email)  
</th>  
<th>  
            @Html.DisplayNameFor(model => model.Contact)  
</th>  
<th></th>  
</tr>  
@foreach (var item in Model) {  
<tr>  
<td>  
            @Html.DisplayFor(modelItem => item.Name)  
</td>  
<td>  
            @Html.DisplayFor(modelItem => item.Email)  
</td>  
<td>  
            @Html.DisplayFor(modelItem => item.Contact)  
</td>  
<td>  
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |  
            @Html.ActionLink("Details", "Details", new { id=item.ID }) |  
            @Html.ActionLink("Delete", "Delete", new { id=item.ID })  
</td>  
</tr>  
}  
</table>  

输出:

右击Index.cshtml文件,并选择“查看在浏览器”,这将执行文件,并产生以下输出。

/ /index文件

此索引文件用于显示学生记录。当前表是空的,所以它不显示任何数据。

添加新的学生

我们可以通过点击Create new按钮来添加新学生。这将重定向到学生表单。

添加它之后,我们又添加了两个条目,然后重定向回索引文件。现在,它包含三个学生记录。

更新记录

我们可以通过点击编辑按钮来更新记录。这将重定向到更新表单。下面的屏幕截图显示了编辑页面。

更新记录索引页后,如下所示

删除记录

我们可以简单地通过点击提供的删除链接来删除任何记录。让我们把罗曼·约翰从表中删除。确认消息将显示给用户以确定。

赞(0)
未经允许不得转载:srcmini » asp.net mvc脚手架

评论 抢沙发

评论前必须登录!