65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Razor Pages 进行简单的 CRUD 操作

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.86/5 (7投票s)

2017 年 9 月 26 日

CPOL

12分钟阅读

viewsIcon

68200

downloadIcon

3018

在本文中,我们将学习如何在 ASP.NET CORE 2.0 中的 Razor Pages 上执行 CRUD 操作。

在本文中,我们将学习如何在 ASP.NET CORE 2.0 中的 Razor Pages 上执行 CRUD 操作。在开始之前,让我们先介绍一些关于 Razor Pages 的基础知识。

什么是 Razor Pages?

Razor Pages 是 ASP.NET Core MVC 的一项新功能,可以更轻松、更高效地编写以页面为中心的场景代码。(定义来自 https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/?tabs=visual-studio

何时使用 Razor Pages?

在应用程序中,有些页面不是很大,但您仍然需要创建控制器并添加操作方法,同时还需要添加视图。

在这种情况下,我们可以使用 Razor Pages,它带有代码隐藏。我们只需要添加一个 Razor Page,然后在视图“Customer.cshtml”中,您可以设计您的视图,并在同一页面上,您可以编写处理请求的代码,例如 GetPost。但是,如果您觉得需要分离它们,那么您可以使用该“Customer.cshtml.cs”的代码隐藏。

Razor Pages 应用程序的前期准备

  1. 安装 .NET Core 2.0 SDK

    URL: https://www.microsoft.com/net/download/core

  2. 安装 Visual Studio 2017 版本 15.3 或更高版本

    URL: https://www.visualstudio.com/downloads/

    Visual Studio Community 2017

    面向学生、开源和个人开发者的免费、功能齐全的 IDE。

    让我们开始创建一个 Razor Pages 应用程序。

创建 Razor Page 项目

要创建项目,只需在 Visual Studio IDE 中选择 **文件** 菜单,然后 → 在其中选择 **新建** → **项目**。

选择项目后,将弹出一个名为“**新建项目**”的新对话框。在该对话框中,我们将选择 **Visual C# 项目模板** → **Web** → **ASP.NET Core Web 应用程序**。然后,我们将项目命名为“RazorPagesDemo”。

命名项目后,我们将单击 **确定** 按钮来创建项目。

将弹出一个新对话框,用于为创建“**ASP.NET Core Web 应用程序**”选择模板。在该模板中,我们将创建一个 ASP.NET Core Razor Pages 应用程序。因此,我们将选择“**Web 应用程序**”。接下来,我们将可以选择框架:.NET Core、.NET Framework,以及 ASP.NET Core 版本。在该版本中,我们将选择“**.NET Core**”和“**ASP.NET Core 2.0**”作为 ASP.NET Core 版本,然后单击 **确定** 按钮来创建项目。

单击 **确定** 按钮后,它将开始创建项目。

项目结构

您会在此项目中看到一些新的项目结构。此项目中没有 *Model*、*View* 或 *Controller* 文件夹。

您只能看到 *Pages* 文件夹,所有 Razor Pages 都存储在此处。

从旧版本回归的一个小功能是代码隐藏,可以使事情变得更容易一些。

是的,Razor Pages 有代码隐藏。

在第一步中,我们将添加一个 *model* 文件夹,并在该文件夹中添加 Customer Model。

创建 Model 文件夹并在其中添加 Customer Model

在本部分中,我们将向“RazorPagesDemo”项目添加一个 *Model* 文件夹。添加文件夹后,接下来我们将向 *Models* 文件夹添加 Customer 类(Model)。

详细信息,请参见下图

添加 Customer Model 后,接下来我们将向此类添加一个属性。

向 Customer Model 添加属性和 DataAnnotations

在 Razor Pages 中,您可以使用与 MVC 中相同的 DataAnnotations

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace RazorPagesDemo.Models
{
    [Table("CustomerTB")]
    public class Customer
    {
        [Key]
        public int CustomerID { get; set; }
        [Required(ErrorMessage = "Enter Name")]
        public string Name { get; set; }
        [Required(ErrorMessage = "Enter Address")]
        public string Address { get; set; }
        [Required(ErrorMessage = "Enter Country Name")]
        public string Country { get; set; }
        [Required(ErrorMessage = "Enter City Name")]
        public string City { get; set; }
        [Required(ErrorMessage = "Enter City Phoneno")]
        public string Phoneno { get; set; }
    }
}

完成添加 Model 和 DataAnnotations 后,接下来我们将添加 Razor Page。

向项目添加 Razor Page

要添加 Razor Page,只需右键单击 *Pages* 文件夹,然后选择 **添加** → 在其中,选择 **新建项**。

选择 **新建项** 后,将弹出一个名为“**新建项**”的新对话框。在该对话框中,我们将选择 Razor Page Item 并将其命名为“Customer.cshtml”,然后单击 **添加** 按钮。

单击 **添加** 按钮后,*Pages* 文件夹结构如下所示。在本部分中,您可以看到“**Customer.cshtml**”视图与“Customer.cshtml.cs”代码隐藏,它将包含处理请求的所有处理器部分。

理解“Customer.cshtml”视图

这个“Customer.cshtml”文件看起来更像一个 Razor 视图。

Customer.cshtml 视图中,您首先会看到 @page 指令,它告诉 Razor 视图引擎此页面是 Razor Page,而不是 MVC 视图,并且它允许页面直接处理请求,而无需经过控制器。

接下来,您可以看到 @modelCustomerModel,这是代码隐藏类的名称。

CustomModel 文件名与 Razor Page 文件“Customer.cshtml.cs”同名,只是最后附加了“*.cs*”。

这个 CustomModel 类继承自 PageModel,这使得该类能够处理请求。

CustomModel 中看到的下一项是 OnGet 方法(处理器),它处理 get 请求。

让我们从一个简单的例子开始,然后我们将开始进行 CRUD 操作。

显示消息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace RazorPagesDemo.Pages
{
    public class CustomerModel : PageModel
    {
        public string WelcomeMessage { get; set; }
 
        public void OnGet()
        {
            WelcomeMessage = "WelCome to Razor Pages by Saineshwar Bageri";
        }
    }
}

在本部分中,我们只是添加了一个名为 WelcomeMessagestring 并为其赋值。

接下来,在视图中,我们将按照以下格式显示一条消息

现在 **保存应用程序** 并运行。

要访问页面,只需输入页面名称“Customer”。

URL: - https://:######/Customer

例如:#######(端口号)

太棒了,我们创建了我们的第一个 Razor Page。

使用 Razor Pages 进行 CRUD 操作

我们要做的第一件事是创建客户。为此,我们在 *Models* 文件夹中添加了 Customer Model。

接下来,我们将如下在 CustomerModel 类中声明该 Model。

CustomerModel 代码片段

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPagesDemo.Models;
 
namespace RazorPagesDemo.Pages
{
    public class CustomerModel : PageModel
    {        
        public Customer Customer { get; set; }
        
        public void OnGet()
        {
           
        }
    }
}

CustomerModel 类中声明此 Customer Model 后,现在可以在 Razor Page 文件(Customer.cshtml)中访问 Customer Model 了。

现在,让我们设计视图。

在 Customer.cshtml 视图中添加输入控件

在本部分中,我们使用了新的 MVC 标签助手来创建输入字段,并将所有 Model 属性添加到了视图中。

注意:如果您想了解新的标签助手详情,请访问此链接:https://blogs.msdn.microsoft.com/cdndevs/2015/08/06/a-complete-guide-to-the-mvc-6-tag-helpers/

@page
@using RazorPagesDemo.Models @*namespace*@
@model CustomerModel
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<div class="container">
    <h3>Add Customer</h3>
    <hr />
    <br />
    <form method="post">
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.Name"></label>
                <input asp-for="Customer.Name" class="form-control" />
                <span class="alert-danger" asp-validation-for="Customer.Name"></span>
            </div>
        </div>
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.Address"></label>
                <input asp-for="Customer.Address" class="form-control" />
                <span class="alert-danger" asp-validation-for="Customer.Address"></span>
            </div>
        </div>
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.Country"></label>
                <input asp-for="Customer.Country" class="form-control" />
                <span class="alert-danger" asp-validation-for="Customer.Country"></span>
            </div>
        </div>
 
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.City"></label>
                <input asp-for="Customer.City" cl class="form-control" />
                <span class="alert-danger" asp-validation-for="Customer.City"></span>
            </div>
        </div>
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.Phoneno"></label>
                <input asp-for="Customer.Phoneno" class="form-control" />
                <span class="alert-danger" asp-validation-for="Customer.Phoneno"></span>
            </div>
        </div>
        <br />
        <input type="submit" value="Save" class="btn btn-primary" />
        <a class="btn btn-default" href="/allcustomer">Cancel</a>
    </form>
</div>

现在保存应用程序并运行项目。

要访问页面,只需输入页面名称“Customer”。

URL: https://:######/Customer

例如:#######(端口号)

Customer 页面的快照

输入 URL 后,第一个请求将转到 OnGet 处理器。

调试时

注意:处理器

Razor Pages 中有两个默认处理器

  1. OnGet()
  2. OnPost()

如果需要,您可以创建自己的处理器。我将在接下来的示例中展示。

完成设计 Razor Page 文件(“Customer.cshtml”)后,现在让我们添加另一个处理器来处理 post 请求。

添加 OnPost 处理器

在本部分中,我们将添加 Post 处理器以获取用户填写的所有数据。

我们添加了 OnPost 处理器,但它没有填充我们已发布的 Model 数据。

调试时

要绑定数据,我们需要在 CustomerModel 类中声明的(Customer)属性上添加 [BindProperty] 属性。

如果我们再次尝试发布 Model,我们将获得填充了值的 Model。让我们将这些值保存在数据库中。

数据库部分

我创建了一个名为“CustomerDB”的数据库,其中包含“CustomerTB”表。

将数据保存到数据库的第一步,我们需要一个 ORM。我们将使用“**Entity Framework Core**”。

从 NuGet 安装 Entity Framework Core 的程序包

要安装程序包,只需右键单击项目(RazorPagesDemo),然后选择管理 NuGet 程序包。将弹出下面的 NuGet 程序包管理器对话框。

在 **浏览** 选项卡中,在搜索框中键入“Microsoft.EntityFrameworkCore.SqlServer”,然后单击 **安装** 按钮。

Microsoft.EntityFrameworkCore.SqlServer

添加连接字符串并设置 DbContext

添加引用后,现在将连接字符串添加到 *appsetting.json* 文件中。

现在,让我们在 *Models* 文件夹中添加一个名为 DatabaseContext 的类。

要添加 Model,只需右键单击 *Models* 文件夹。然后,选择 **添加** → **类**。将弹出一个“**添加新项**”对话框,其中已选中默认类。将类命名为 DatabaseContext 并单击 **添加** 按钮。

添加 DatabaseContext 类后,接下来我们将继承 DbContext 类。

继承 DbContext 后,接下来我们将创建一个构造函数,该构造函数接受 DbContextOptions 作为输入参数,并继承基类构造函数(: base(options))[DbContext]。

DatabaseContext 类代码片段

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace RazorPagesDemo.Models
{
    public class DatabaseContext : DbContext
    {
        public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
        {
 
        }
    }
}

接下来,我们将在 *Startup.cs* 类中添加一个新的服务以进行依赖注入。

现在,无论何时使用 DatabaseContext 类,DbContext 实例都将被注入到其中。

添加 CustomerTB Model 后,在下一步中,我们将向 DatabaseContext 类添加所有 Model 的 DbSet

在 DatabaseContext 类中为 CustomerTB Model 添加 DbSet

现在,让我们像下面这样在 DatabaseContext 类中添加 CustomerTB Model 的 DbSet

DatabaseContext 类中添加 DbSet 后,接下来我们将在 CustomerModel 类中添加一个构造函数。

在 CustomerModel 类中设置依赖注入

在本部分中, wherever we use DatabaseContext class, DbContext instance will be injected there.

现在使用(“_Context”)对象,我们可以将数据保存到数据库中,让我们在 OnPost 处理器中进行更改以将数据保存到数据库。

您可以在下面的快照中看到我们已对 OnPost 处理器进行了更改

CustomerModel 类代码片段

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPagesDemo.Models;
namespace RazorPagesDemo.Pages
{
    public class CustomerModel : PageModel
    {
        DatabaseContext _Context;
        public CustomerModel(DatabaseContext databasecontext)
        {
            _Context = databasecontext;
        }
 
        [BindProperty]
        public Customer Customer { get; set; }
        public void OnGet()
        {
 
        }
        public ActionResult OnPost()
        {
            var customer = Customer;
            if (!ModelState.IsValid)
            {
                return Page(); // return page
            }
 
            customer.CustomerID = 0;
            var result = _Context.Add(customer);
            _Context.SaveChanges(); // Saving Data in database
                return RedirectToPage("AllCustomer");
        }
    }
}

现在保存应用程序并运行项目。

要访问页面,只需输入页面名称“Customer”。

URL: https://:######/Customer 例如:#######(端口号)

现在,保存按钮上的数据将被保存在数据库中。

数据库输出

现在我们已完成添加部分,让我们添加另一个 Razor Page 来显示所有客户(AllCustomer)。

添加 All Customer Razor Page

在本部分中,我们将添加另一个 Razor Page 来显示数据库中保存的所有客户。

以与添加 customer razor page 相同的方式添加一个新的 razor page

添加 AllCustomer.cshtml Razor Page 后,接下来我们将添加构造函数和 OnGet 处理器。

添加构造函数和 OnGet 处理器

在本部分中,onGet 处理器中,我们将从数据库中获取所有客户详细信息,并将这些值分配给 CustomerList,然后在 Razor Page 上,我们将遍历并显示客户详细信息。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPagesDemo.Models;
using System.Collections.Generic;
using System.Linq;
namespace RazorPagesDemo.Pages
{
    public class AllCustomerModel : PageModel
    {
        DatabaseContext _Context;
        public AllCustomerModel(DatabaseContext databasecontext)
        {
            _Context = databasecontext;
        }
 
        public List<Customer> CustomerList { get; set; }
        public void OnGet()
        {
            var data = (from customerlist in _Context.CustomerTB
                        select customerlist).ToList();
 
            CustomerList = data;
        }
    }
}

添加 AllCustomer.cshtml

AllCustomer razor page 视图中,我们将声明 @page 指令,然后是命名空间,最后是 @model,即“AllCustomerModel”。

现在我们将遍历数据(CustomerList)。

AllCustomerModel.cshtml 代码片段

@page
@using RazorPagesDemo.Models
@model AllCustomerModel

<h2>Index</h2>
 
<p>
    <a asp-page="Customer">Create New Customer</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayName("Name")
            </th>
            <th>
                @Html.DisplayName("Address")
            </th>
            <th>
                @Html.DisplayName("Country")
            </th>
            <th>
                @Html.DisplayName("City")
            </th>
            <th>
                @Html.DisplayName("Phoneno")
            </th>
            <th>Edit | Delete</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model.CustomerList)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Address)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Country)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.City)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Phoneno)
                </td>
                <td>
                    <a asp-page="./EditCustomer" asp-route-id="@item.CustomerID">Edit</a> |
                    <a asp-page="./AllCustomer" onclick="return confirm
                    ('Are you sure you want to delete this item?');" 
                    asp-page-handler="Delete" asp-route-id="@item.CustomerID">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>

在遍历 CustomerList 时,您可能已经看到了一个新的标签助手,我们使用它来创建 **编辑** 和 **删除** 按钮的链接。

编辑链接

在编辑链接中,我们只需将 EditCustomer razor page 名称分配给“asp-page”属性,并将“asp-route-id”分配给 CustomerID。我们还没有添加 EditCustomer razor page,很快就会添加。

<a asp-page="./EditCustomer" asp-route-id="@item.CustomerID">Edit</a>

删除链接

在删除链接中,我们仅将 AllCustomer razor page 名称分配给“asp-page”属性,并将“asp-route-id”分配给 CustomerID。接下来,我们将分配“asp-page-handler”属性,这对于 razor pages 来说是新的。在这里,我们将添加处理程序名称“Delete”,我们将在 AllCustomer razor page 中创建它。

<a asp-page="./AllCustomer" 
onclick="return confirm('Are you sure you want to delete this item?');" 
asp-page-handler="Delete" asp-route-id="@item.CustomerID">Delete</a>

添加 Delete 处理器

在 Razor Pages 中,我们有两个默认处理器:OnGetOnPost,但我们也可以添加自定义处理器来处理 OnGetOnPost 请求。

下面是它的快照。

Delete 处理器代码片段

在本部分中,我们将添加 Delete 处理器“OnGetDelete”,它接受 CustomerID 作为输入。在收到 CustomerIDid)后,我们将通过传递 CustomerIDid)从数据库中获取 Customer 详细信息,并将其传递给 remove 方法进行删除,最后,删除后,我们将重定向到 AllCustomer 页面。

public ActionResult OnGetDelete(int? id)
        {
            if (id != null)
            {
                var data = (from customer in _Context.CustomerTB
                            where customer.CustomerID == id
                            select customer).SingleOrDefault();
 
                _Context.Remove(data);
                _Context.SaveChanges();
            }
            return RedirectToPage("AllCustomer");
        }

现在保存应用程序并运行。

访问 AllCustomer 页面。

现在,如果您查看删除链接,通过将鼠标悬停在其上,您可以看到我们正在传递 idCustomerId),同时,我们还传递了处理程序名称(“Delete”)。

例如:https://:49989/AllCustomer?id=2&handler=Delete

调试时

最后,我们创建了删除处理器。CRUD 操作中最后剩下的是编辑客户(Update),让我们开始添加 EditCustomer Razor Page。

添加 EditCustomer Page

在本部分中,我们将添加另一个 razor page 来编辑数据库中保存的客户详细信息。

以与添加 customer razor page 相同的方式添加新的 razor page

添加 EditCustomer.cshtml Razor Page 后,接下来我们将添加 ConstructorOnGet 处理器。

添加构造函数和 OnGet 处理器

在本部分 onGet 处理器中,我们将从查询字符串中获取 CustomerIDid)。然后,我们将从数据库中获取客户详细信息,并将这些值分配给 Customer Model。我们将把这个 Model 发送到 Edit Customer 视图。

编辑 Customer Model 代码片段

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPagesDemo.Models;
namespace RazorPagesDemo.Pages
{
    public class EditCustomerModel : PageModel
    {
        DatabaseContext _Context;
        public EditCustomerModel(DatabaseContext databasecontext)
        {
            _Context = databasecontext;
        }
        
        [BindProperty]
        public Customer Customer { get; set; }
 
        public void OnGet(int? id)
        {
            if (id != null)
            {
                var data = (from customer in _Context.CustomerTB
                            where customer.CustomerID == id
                            select customer).SingleOrDefault();
                            Customer = data;
            }
        }
    }
}

接下来,我们将设计 Edit 视图以显示记录以便编辑。

Edit Customer Page 代码片段

在这个页面中,我们正在创建一个编辑页面,这意味着我们将显示记录并允许用户编辑详细信息并更新它。

您首先会看到 @page"{id: int}" 指令,它告诉页面需要“{id: int}”int id(CustomerID),然后才会接受请求,否则将返回 HTTP 404(未找到)错误。idCustomerID)将从 AllCustomer 视图的 Edit 链接发送。

注意@page"{id: int}" 它是 Razor Pages 中的一种路由方式。

链接示例:https://:49989/EditCustomer/1

@page "{id:int}"
@using RazorPagesDemo.Models
@model EditCustomerModel
<div class="container">
    <h3>Edit Customer</h3>
    <hr />
    <br />
    <form method="post">
        <input asp-for="Customer.CustomerID" type="hidden" />
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.Name"></label>
                <input asp-for="Customer.Name" class="form-control" />
            </div>
        </div>
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.Address"></label>
                <input asp-for="Customer.Address" class="form-control" />
            </div>
        </div>
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.Country"></label>
                <input asp-for="Customer.Country" class="form-control" />
            </div>
        </div>
 
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.City"></label>
                <input asp-for="Customer.City" cl class="form-control" />
            </div>
        </div>
        <div class="row">
            <div class="col-md-4">
                <label asp-for="Customer.Phoneno"></label>
                <input asp-for="Customer.Phoneno" class="form-control" />
            </div>
        </div>
        <br />
        <input type="submit" value="Save" class="btn btn-primary" />
        <a class="btn btn-default" href="/allcustomer">Cancel</a>
    </form>
</div>

现在保存应用程序并运行。

访问 AllCustomer 页面

现在将鼠标悬停在编辑链接上,您可以看到生成的 URL(https://:49989/EditCustomer/1),然后单击 Edit 链接,它将显示 EditCustomer Page。

调试时

现在我们已经完成了 Edit 页面 OnGet 处理器实现,它有助于以编辑模式显示客户数据,接下来我们需要更新数据,为此我们需要添加 Onpost 处理器来处理 post 请求。

OnPost 请求代码片段

在本部分中,我们将发布数据,这将更新 Customer Model,我们将检查它是否有效。如果无效,我们将返回 Page(),这将显示错误消息。

如果有效,我们将更新数据库中的数据并将页面重定向到 AllCustomer 页面。

完整的 EditCustomerModel 代码片段

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPagesDemo.Models;
using System.Linq;
namespace RazorPagesDemo.Pages
{
    public class EditCustomerModel : PageModel
    {
        DatabaseContext _Context;
        public EditCustomerModel(DatabaseContext databasecontext)
        {
            _Context = databasecontext;
        }
        
        [BindProperty]
        public Customer Customer { get; set; }
 
        public void OnGet(int? id)
        {
            if (id != null)
            {
                var data = (from customer in _Context.CustomerTB
                            where customer.CustomerID == id
                            select customer).SingleOrDefault();
                            Customer = data;
            }
        }
        public ActionResult OnPost()
        {
            var customer = Customer;
            if (!ModelState.IsValid)
            {
                return Page();
            }
 
            _Context.Entry(customer).Property(x => x.Name).IsModified = true;
            _Context.Entry(customer).Property(x => x.Phoneno).IsModified = true;
            _Context.Entry(customer).Property(x => x.Address).IsModified = true;
            _Context.Entry(customer).Property(x => x.City).IsModified = true;
            _Context.Entry(customer).Property(x => x.Country).IsModified = true;
            _Context.SaveChanges();
            return RedirectToPage("AllCustomer");
        }
    }
}

Edit Customer Page 快照

我们已更新 Customer 的名称,现在让我们查看 All customer 视图,看值是否已更新。

太棒了,我们已成功在数据库中更新了 Customer Name!

调试时

表单验证

在 Razor Pages 中,验证与 MVC 验证类似。没有任何变化,只需在 Model 属性上添加 DataAnnotations 属性,然后在视图中,开始其验证控件。

最后,我们了解了什么是 Razor Pages,以及如何一步一步地使用 Razor Pages 进行 CRUD 操作。我希望您喜欢我的文章。

历史

  • 2017 年 9 月 26 日:初始版本
© . All rights reserved.