ASP.NET MVC5网站开发项目框架(二)

ASP.NET MVC5网站开发项目框架(二)的完整攻略, 包含以下几个步骤:

步骤一:创建ASP.NET MVC5项目

首先,我们需要创建一个ASP.NET MVC5项目。在Visual Studio中,选择File->New->Project,选择ASP.NET Web Application模板,然后在下一个页面中选择MVC模板,设置项目名称和路径,最后单击“创建”按钮即可创建项目。此时,我们将得到一个默认的MVC应用程序。

步骤二:添加实体类和数据访问层

  1. 添加实体类

在Models文件夹下创建一个类文件,用于定义我们的实体类。比如,我们可以定义一个名为“Person”的类,包含Id、Name、Age三个属性。

    public class Person
    {
        [Key]
        public int Id { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }
    }
  1. 添加数据访问层

在Models文件夹下,创建一个名为“Dal”的新文件夹,然后再创建一个名为“PersonDal”的数据访问层类文件,用于实现数据的增删改查等操作。代码实现如下:

    public class PersonDal
    {
        private ApplicationDbContext db = new ApplicationDbContext();

        public void Add(Person person)
        {
            db.People.Add(person);
            db.SaveChanges();
        }

        public void Delete(int id)
        {
            var person = db.People.Find(id);
            db.People.Remove(person);
            db.SaveChanges();
        }

        public void Edit(Person person)
        {
            db.Entry(person).State = EntityState.Modified;
            db.SaveChanges();
        }

        public IQueryable<Person> GetAll()
        {
            return db.People;
        }

        public Person GetById(int id)
        {
            return db.People.Find(id);
        }
    }

步骤三: 添加控制器和视图

  1. 添加控制器

我们需要添加一个控制器,来支持我们的视图和数据访问层对于数据的管理。请在Controllers文件夹中创建一个名为“PersonController”的控制器,并以以下代码实现:

    public class PersonController : Controller
    {
        private readonly PersonDal _personDal;

        public PersonController()
        {
            _personDal = new PersonDal();
        }

        // GET: Person
        public ActionResult Index()
        {
            var persons = _personDal.GetAll().ToList();
            return View(persons);
        }

        // GET: Person/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: Person/Create
        [HttpPost]
        public ActionResult Create(Person person)
        {
            if (ModelState.IsValid)
            {
                _personDal.Add(person);
                return RedirectToAction("Index");
            }

            return View(person);
        }

        // GET: Person/Edit/5
        public ActionResult Edit(int id)
        {
            var person = _personDal.GetById(id);

            if (person == null)
            {
                return HttpNotFound();
            }

            return View(person);
        }

        // POST: Person/Edit/5
        [HttpPost]
        public ActionResult Edit(Person person)
        {
            if (ModelState.IsValid)
            {
                _personDal.Edit(person);
                return RedirectToAction("Index");
            }

            return View(person);
        }

        // GET: Person/Delete/5
        public ActionResult Delete(int id)
        {
            var person = _personDal.GetById(id);

            if (person == null)
            {
                return HttpNotFound();
            }

            return View(person);
        }

        // POST: Person/Delete/5
        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            _personDal.Delete(id);
            return RedirectToAction("Index");
        }
    }
  1. 添加视图

我们需要添加以下三个视图:

  • Index.cshtml:用于显示所有Person实例列表
  • Create.cshtml:用于创建新Person实例
  • Edit.cshtml:用于编辑Person实例

具体实现如下:

Index.cshtml

    @model IEnumerable<WebApplication1.Models.Person>

    @{
        ViewBag.Title = "Person List";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>@ViewBag.Title</h2>

    <p>@Html.ActionLink("Create New", "Create")</p>

    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Age)
            </th>
            <th></th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Age)
                </td>
                <td>
                    @Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
                    @Html.ActionLink("Delete", "Delete", new { id = item.Id })
                </td>
            </tr>
        }
    </table>

Create.cshtml

    @model WebApplication1.Models.Person

    @{
        ViewBag.Title = "Create Person";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>@ViewBag.Title</h2>

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()

        <div class="form-horizontal">
            <h4>Person</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            <div class="form-group">
                @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Age, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Age, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Age, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
            </div>
        </div>
    }

Edit.cshtml

    @model WebApplication1.Models.Person

    @{
        ViewBag.Title = "Edit Person";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>@ViewBag.Title</h2>

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()

        <div class="form-horizontal">
            <h4>Person</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            <div class="form-group">
                @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Age, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Age, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Age, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Save" class="btn btn-default" />
                </div>
            </div>
        </div>
    }

步骤四: 测试应用

  1. 启动应用程序

在Visual Studio工具栏中单击“播放”按钮以启动应用程序,然后在Web浏览器中打开"http://localhost:xxxxx/Person"(其中“xxxxx”为你的本地web服务器端口号)。

  1. 进行测试

网站成功启动之后,您就可以使用页面上的链接来创建、编辑、删除和查看Person实例的信息。并且,在操作期间,相关数据将由我们自动封装在我们已经创建的PersonDal数据访问层类对象中。

示例操作:

  • 单击“Create New”链接并填写表单,以创建一个新的Person实例。
  • 单击创建后,返回人员列表页面,并检查列表中是否显示了您刚才创建的实例。
  • 选择您想要编辑的人员,并单击“Edit”链接,对该实例的属性进行修改。
  • 单击“Save”保存修改后,返回人员列表页面,并检查列表中是否显示了您刚才所修改的信息。
  • 选择您想要删除的Person实例,并单击“Delete”链接,进行删除操作。
  • 删除后返回人员列表页面,并检查列表是否不再显示刚才删除的Person实例。

通过以上示例操作,我们已经成功创建了一个简单的ASP.NET MVC应用程序,其中包含了支持实体类和数据访问层的控制器,以及用于用户交互和数据验证的视图。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET MVC5网站开发项目框架(二) - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 开源跨平台运行服务插件TaskCore.MainForm

    开源跨平台运行服务插件TaskCore.MainForm攻略 TaskCore.MainForm是一个开源的跨平台运行服务插件,它可以帮助用户在Windows、Linux和macOS等操作系统上运行后台任务。本攻略将详细讲解如何使用TaskCore.MainForm,并提供两个示例说明。 安装TaskCore.MainForm 要使用TaskCore.Mai…

    C# 2023年5月17日
    00
  • C#实现猜数字小游戏

    C#实现猜数字小游戏 简介 猜数字小游戏是一种经典的游戏,玩家需要通过猜测数字来获得游戏胜利。在这个小游戏的实现过程中,我们使用C#语言,通过控制台进行交互。 实现过程 确定游戏规则 在开始实现之前,我们需要确定游戏的规则。猜数字小游戏的规则可以如下: 游戏系统会生成一个随机数字,范围为1-100之间 玩家需要通过输入数字来猜出系统生成的随机数字 如果玩家猜…

    C# 2023年6月1日
    00
  • 用C#实现启动另一程序的方法实例

    下面我会介绍用C#实现启动另一个程序的方法实例。 准备工作 在C#中,我们可以通过Process类来启动另一个程序。在使用Process类前,需要引入System.Diagnostics命名空间。同时,我们需要确定要启动的程序的具体位置(即可执行文件的路径)。 启动程序 以下是用C#启动程序的示例代码: using System.Diagnostics; /…

    C# 2023年6月7日
    00
  • ASP.NET预备知识学习笔记

    当学习ASP.NET时,首先需要具备一些预备知识,包括以下内容: 1. C#编程语言基础 学习数据类型(int,float,bool,string等) 学习控制结构(if-else,for,while等) 学习面向对象概念(类,对象,继承,封装等) 学习集合类型(数组,List,Dictionary等) 2. HTML和CSS基础 学习HTML标签,了解HT…

    C# 2023年5月15日
    00
  • ASP.NET MVC使用typeahead.js实现输入智能提示功能

    当我们需要在 ASP.NET MVC 应用程序中实现输入智能提示功能时,可以使用 typeahead.js 插件。typeahead.js 可以根据用户输入的字符,从服务器获取匹配的建议列表,并输入框下方显示这些建议。以下是详细的攻略: 步骤1:装 typeahead.js 在 Visual Studio 中打开项目,键单击项目名称,选择“管理 NuGet …

    C# 2023年5月12日
    00
  • asp.net实现将ppt文档转换成pdf的方法

    将 ppt 文档转换成 PDF 是一个常见的需求,以下是 asp.net 实现将 ppt 文档转换成 PDF 的方法的完整攻略。 步骤 1:安装 Microsoft PowerPoint Interop 首先,您需要安装 Microsoft PowerPoint Interop 来处理 ppt 文件。通过安装 PowerPoint Interop,您可以将 …

    C# 2023年6月1日
    00
  • C#基础:Equals()与运算符==的区别分析

    标题:C#基础:Equals()与运算符==的区别分析 简介 在C#编程中,我们经常需要比较两个对象的值是否相等,比如比较两个字符串或数值是否相等等。而比较对象值相等的方式有很多种,比如使用Equals()方法或运算符==。本文将深入分析Equals()方法与运算符==的区别,并提供几个示例来帮助解释。 Equals()方法与运算符==的区别 我们先来简单地…

    C# 2023年6月1日
    00
  • C#基础之泛型

    C#基础之泛型 什么是泛型 在C#中,泛型即“参数化类型”,即对数据类型进行参数化,使得能够在类型安全的前提下对不同的数据类型进行通用的操作。用一句话来概括就是,泛型即类型参数化。 泛型具有以下特点: 可以避免类型强转的问题。 提供更高效的代码复用,避免了针对不同类型创建不同版本的代码的问题。 增加代码可读性,因为泛型可以让我们不需要在代码中反复使用Obje…

    C# 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部