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日

相关文章

  • C#使用读写锁解决多线程并发问题

    下面就是C#使用读写锁解决多线程并发问题的完整攻略。 什么是读写锁 读写锁是一种并发控制机制,它允许多个线程同时读取共享的数据,但在写入数据时需要互斥访问,即写者独占。 为什么需要读写锁 在多线程程序中,当多个线程同时读取共享数据时,如果没有对其进行保护,容易出现数据不一致的情况,也可能会降低程序性能。而使用读写锁则可以解决这个问题,提高程序性能。 C#中的…

    C# 2023年5月15日
    00
  • asp.net UpdaeProgress的简单用法

    下面是 “ASP.NET UpdateProgress的简单用法”的完整攻略: 什么是ASP.NET UpdateProgress? ASP.NET UpdateProgress 允许在触发异步操作时显示进度指示器。 我们可以使用 UpdatePanel 控件或自己的自定义异步回发来合并 UpdateProgress 控件。 如何实现ASP.NET Upda…

    C# 2023年6月3日
    00
  • C#与java TCP通道加密通信实例

    首先,为了实现C#与Java之间的TCP加密通道通信,我们需要使用SSL加密套接字。下面是实现的步骤: 步骤1:创建SSL加密证书 我们需要在服务器上创建一个SSL证书用于加密TCP通信,这可以使用OpenSSL工具来实现。 openssl req -new -x509 -days 365 -nodes -out server.crt -keyout ser…

    C# 2023年6月7日
    00
  • C#列表List、HashSet和只读集合介绍

    下面是关于C#列表List、HashSet和只读集合的详细介绍: C#列表List List 是 .NET 中一个通用的动态数组容器,它能存储任何类型的数据 (T 类型)。它是许多数据存储的良好选择,因为它支持快速的索引查找,提供了几个有用的方法,如 Add()、Remove() 和 Sort()。List 自动处理数组大小,所以是一个不错的集合。 声明和初…

    C# 2023年6月1日
    00
  • C#中使用@声明变量示例(逐字标识符)

    C#中使用@声明变量的方式又被称为逐字(verbatim)标识符。这种方式可以避免C#关键字与变量名冲突的问题,同时也支持在字符串中直接输出换行符和制表符等特殊字符,非常实用。下面我们详细讲解一下如何使用@声明变量。 基本语法 使用@声明变量的基本语法如下: @变量名 = 值 其中,@符号紧贴变量名,表示对变量名进行逐字标识符声明。 示例一 下面来看一个简单…

    C# 2023年5月15日
    00
  • Jexcel实现按一定规则分割excel文件的方法

    Jexcel是一种JavaScript库,用于在Web应用程序中创建和编辑Excel电子表格。本文将提供详细的“Jexcel实现按一定规则分割excel文件的方法”的完整攻略,包括什么是Jexcel、如何按一定规则分割excel文件以及两个示例。 什么是Jexcel? Jexcel是一种JavaScript库,用于在Web应用程序中创建和编辑Excel电子表…

    C# 2023年5月15日
    00
  • C# 中const,readonly,static的使用小结

    下面是对于“C#中const,readonly,static的使用小结”的详细讲解。 前言 在C#开发中,我们常常会使用const,readonly和static这三个关键字,它们都可以用来定义变量,但具有不同的作用。 const const是常量的意思,其特点是在编译时期已经固定下来了,不可改变。 在C#中,const定义的变量必须在声明时初始化,而且只能…

    C# 2023年5月15日
    00
  • C# ToString():返回表示当前对象的字符串

    C#中的ToString()方法是一个经常被使用的方法,可以将任意类型的对象转化为字符串类型。ToString()方法虽然看似简单,但具有非常灵活的使用方式,可以方便地自定义类型的打印格式。下面是关于ToString()的完整攻略: 调用方式 使用ToString()方法的方式很简单,只需在对象上调用ToString()方法即可得到转化后的字符串: usin…

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