ASP.NET MVC 5 - 给电影表和模型添加新字段

使用OpenTK展示3D点云图像(C#) 图中存在一个空的点,可通过阈值分割过滤掉,然后如何保证某个点必然存在后面两个和它构成三角形的点,用一个2x2的结构元腐蚀阈值分割出的区域,得到剩下所有的点必然每个点可以构成三角形,这种得到三角形的算法效率会非常高。然后还有光照,无光照和有光照效果差异很大,处理光照核心在于得到每个点的法向量,用上面的三角形的两条边构成的向量叉乘,及得到这个点的法向量,输入给着色器处理得到光照的渲染效果,如下面两张图对比。我们需要把点连成面,有很多算法可以实现,但我拿到的图为一张tif格式16位的深度图,如下图。 阅读详情

在本节中,您将使用Entity Framework Code First来实现模型类上的操作。从而使得这些操作和变更,可以应用到数据库中。

默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的。如果他们不是同步的,Entity Framework将抛出一个错误。这非常方便的在开发时就可以发现错误,否则您可能会在运行时才发现这个问题。

为对象模型的变更设置 Code First Migrations

从解决方案资源管理器中双击Movies.mdf,打开数据库工具, 在数据库工具 (数据库资源管理器、 服务器资源管理器或 SQL Server对象资源管理器),右键单击Movies.mdf f,并选择删除。

clip_image002

Build应用程序,以确保没有任何编译错误。

从工具菜单上,单击库包管理器,然后点击程序包管理器控制台.

clip_image004

在程序包管理器控制台窗口,在提示符 PM> 后输入:

Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDBContext

clip_image006

如上所示的Enable-Migrations 命令,会在Migrations文件夹下创建一个Configuration.cs 文件。

clip_image008

在Visual Studio 里面打开Configuration.cs 文件. 用下面的代码替换Seed函数:

protected override void Seed(MvcMovie.Models.MovieDBContext context) 
{ 
    context.Movies.AddOrUpdate( i => i.Title, 
        new Movie 
        { 
            Title = "When Harry Met Sally", 
            ReleaseDate = DateTime.Parse("1989-1-11"), 
            Genre = "Romantic Comedy", 
            Price = 7.99M 
        },

         new Movie 
         { 
             Title = "Ghostbusters ", 
             ReleaseDate = DateTime.Parse("1984-3-13"), 
             Genre = "Comedy", 
             Price = 8.99M 
         },

         new Movie 
         { 
             Title = "Ghostbusters 2", 
             ReleaseDate = DateTime.Parse("1986-2-23"), 
             Genre = "Comedy", 
             Price = 9.99M 
         },

       new Movie 
       { 
           Title = "Rio Bravo", 
           ReleaseDate = DateTime.Parse("1959-4-15"), 
           Genre = "Western", 
           Price = 3.99M 
       } 
   ); 
   
}

右键单击红色波浪线下Movie,并选择“解析(Resolve)”,然后单击“using MvcMovie.Models;

clip_image010

这样做会增加下面的语句:

using MvcMovie.Models;

Code First Migrations调用Seed的方法,每个迁移(程序包管理器控制台更新数据库),此方法用于updates数据(如果数据存在),或inserted数据。

在AddOrUpdate方法在下面的代码执行一个的“upsert”操作:

context.Movies.AddOrUpdate(i => i.Title, 
    new Movie 
    { 
        Title = "When Harry Met Sally", 
        ReleaseDate = DateTime.Parse("1989-1-11"), 
        Genre = "Romantic Comedy", 
        Rating = "PG", 
        Price = 7.99M 
    }

 

因为Seed方法与每个迁移同时运行时,故,你不能仅仅插入数据,因为当你正试图添加,可能已经完成了创建数据库后的第一次迁移。“upsert”操作阻止错误的发生,如果你尝试插入一个已经存在的行,它覆盖任何数据更改,当你在测试应用程序的同时。你可能不希望这样的事情发生:在某些情况下,当您更改数据测试时,你希望你的变化后数据库同步更新。在这种情况下,你想要做一个有条件的插入操作:只有当它不存在的时候,插入一行。
传递给AddOrUpdate的方法的第一个参数, 指定的属性来使用以检查是否已存在某行。对于您所提供的测试影片的数据,Title属性可以被用于此目的,因为每个标题在列表中是唯一:

context.Movies.AddOrUpdate(i => i.Title,

这个代码假设titiles属性是唯一的。如果手动添加一个重复的标题,你会得到下面的异常。

更多关于 AddOrUpdate 方法的信息,请参见 Take care with EF 4.3 AddOrUpdate Method..

按 CTRL-SHIFT-B 来Build工程。(如果此次Build不成功,以下的步骤将会失败。)

下一步是创建一个DbMigration类,用于初始化数据库迁移。此迁移类将创建新的数据库,这也就是为什么在之前的步骤中你要删除movie.mdf文件。

在软件包管理器控制台窗口中,输入"add-migration Initial"命令来创建初始迁移。" Initial" 的名称是任意,是用于创建迁移文件的名称。

clip_image012

Code First Migrations将会在Migrations文件夹中创建另一个类文件 (文件名为: {DateStamp}_Initial.cs ),此类中包含的代码将创建数据库的Schema。迁移文件名使用时间戳作为前缀,以帮助用来排序和查找。查看{DateStamp}_Initial.cs文件,它包含了为电影数据库创建电影表的说明。当您更新数据库时, {DateStamp}_Initial.cs文件将会被运行并创建 DB 的Schema。然后Seed方法将运行,用来填充 DB 的测试数据。

在软件包管理器控制台中,输入命令" update-database ",创建数据库并运行Seed方法。

clip_image014

如果您收到表已经存在并且无法创建的错误,可能是因为您已经删除了数据库,并且在执行update-database之前,您运行了应用程序。在这种情况下,再次删除Movies.mdf文件,然后重试update-database命令。如果您仍遇到错误,删除Migration文件夹及其内容,然后从头开始重做。(即删除Movies.mdf文件,然后再进行Enable-Migrations)

运行该应用程序,然后浏览URL /Movies Seed数据显示如下:

clip_image016

 

为影片模型添加评级(Rating)属性

给现有的Movie类,添加新的Rating属性。打开Models\Movie.cs文件并添加如下Rating属性:

public string Rating { get; set; }

完整的Movie类如下:

public class Movie 
{ 
    public int ID { get; set; } 
    public string Title { get; set; }

    [Display(Name = "Release Date")] 
    [DataType(DataType.Date)] 
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
    public DateTime ReleaseDate { get; set; } 
    public string Genre { get; set; } 
    public decimal Price { get; set; } 
    public string Rating { get; set; } 
}

Build 应用程序 Build>Build Move或CTRL-SHIFT-B.

因为你已经添加了新的字段,电影类的,你还需要Bind,所以这次新的属性将被包含。更新的绑定属性,Create和Edit动作方法, 包括Rating属性:

[Bind(Include = "ID,Title,ReleaseDate,Genre,Price,Rating")]

您还需要更新视图模板,以显示浏览器视图中创建和编辑新的评级(Rating)属性。

打开\Views\Movies\Index.cshtml文件,在Price列后面添加<th>Rating</th>的列头。然后添加一个<td>列来显示@item.Rating的值。下面是更新的Index.cshtml视图模板:

@model IEnumerable<MvcMovie.Models.Movie> 
@{ 
    ViewBag.Title = "Index"; 
} 
<h2>Index</h2> 
<p> 
    @Html.ActionLink("Create New", "Create") 
    @using (Html.BeginForm("Index", "Movies", FormMethod.Get)) 
    { 
    <p> 
        Genre: @Html.DropDownList("movieGenre", "All") 
        Title: @Html.TextBox("SearchString") 
        <input type="submit" value="Filter" /> 
    </p> 
    } 
</p> 
<table class="table"> 
    <tr> 
        <th> 
            @Html.DisplayNameFor(model => model.Title) 
        </th> 
        <th> 
            @Html.DisplayNameFor(model => model.ReleaseDate) 
        </th> 
        <th> 
            @Html.DisplayNameFor(model => model.Genre) 
        </th> 
        <th> 
            @Html.DisplayNameFor(model => model.Price) 
        </th> 
        <th> 
            @Html.DisplayNameFor(model => model.Rating) 
        </th>

        <th></th> 
    </tr>

@foreach (var item in Model) { 
    <tr> 
        <td> 
            @Html.DisplayFor(modelItem => item.Title) 
        </td> 
        <td> 
            @Html.DisplayFor(modelItem => item.ReleaseDate) 
        </td> 
        <td> 
            @Html.DisplayFor(modelItem => item.Genre) 
        </td> 
        <td> 
            @Html.DisplayFor(modelItem => item.Price) 
        </td> 
        <td> 
            @Html.DisplayFor(modelItem => item.Rating) 
        </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>

下一步,打开\Views\Movies\Create.cshtml文件,并在form标签结束处的附近添加如下代码。您可以在创建新的电影时指定一个电影等级。

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

        <div class="form-group"> 
            @Html.LabelFor(model => model.Rating, new { @class = "control-label col-md-2" }) 
            <div class="col-md-10"> 
                @Html.EditorFor(model => model.Rating) 
                @Html.ValidationMessageFor(model => model.Rating) 
            </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> 
}

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div>

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
}



<div class="form-group">

@Html.LabelFor(model => model.Price, new { @class = "control-label col-md-2" })

<div class="col-md-10">

@Html.EditorFor(model => model.Price)

@Html.ValidationMessageFor(model => model.Price)

</div>

</div>

<div class="form-group">

@Html.LabelFor(model => model.Rating, new { @class = "control-label col-md-2" })

<div class="col-md-10">

@Html.EditorFor(model => model.Rating)

@Html.ValidationMessageFor(model => model.Rating)

</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>

}

<div>

@Html.ActionLink("Back to List", "Index")

</div>

@section Scripts {

@Scripts.Render("~/bundles/jqueryval")

}

现在,您已经更新应用程序代码以支持了新的Rating属性。

现在运行该应用程序,然后浏览 /Movies的 URL。然而,当您这样做时,您将看到以下之一的错误信息:

clip_image018
自从数据库创建后,备份的'MovieDBContext上下文模型已经改变。请考虑使用Code First Migrations更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269).

clip_image020

你看到这个错误,因为更新的的Movie模型类中比现在Movie现有数据库表的schema不同。 (在数据库表中没有Rating列。)

有几个解决错误的方法:

1. Entity Framework会自动删除并重新创建数据库根据新模型类schema。在开发周期的早期, 这种方式非常方便,当你正在做开发一个测试数据库,它可以让你快速演进模型和数据库schema。不足之处,你将失去现有的数据库中的数据 - 所以对生产数据库你不想使用这种方法! 通常是一个富有成效的办法,开发一个应用程序来初始化数据库的自动测试数据。更多关于Entity Framework database初始化的信息,请参阅Tom Dykstra's fantastic ASP.NET MVC/Entity Framework tutorial.

2. 显式修改现有数据库的架构,以便它匹配的模型类。这种方法的优点是,你保持你的数据。可以使手动或通过建立数据库更改脚本实现它。

3. 使用Code First Migrations来更新数据库schema。

在本教程中,我们将使用Code First Migrations方法。

更新Seed 方法,以使它可以给新列提供一个值。 打开Migrations\Configuration.cs 文件,在每个Movie下添加Rating 字段.

new Movie 
        { 
            Title = "When Harry Met Sally", 
            ReleaseDate = DateTime.Parse("1989-1-11"), 
            Genre = "Romantic Comedy", 
            Rating = "PG", 
            Price = 7.99M 
        },

编译解决方案,打开程序包管理器控制台窗体,输入如下命令:

add-migration Rating

add-migration命令告诉migration framework,来检查当前电影模型与当前的影片 DB Schema并创建必要的代码以将数据库迁移到新的模型。AddRatingMig 是一个任意的文件名参数,用于命名migration文件。它将有助于使得迁移步骤成为一个有意义的名字。

当命令完成后,用Visual Studio 打开类文件,新继承自DbMIgration 类的定义,并在Up 方法中,您可以看到创建新列的代码:

public partial class AddRatingMig : DbMigration 
{ 
    public override void Up() 
    { 
        AddColumn("dbo.Movies", "Rating", c => c.String()); 
    } 
    
    public override void Down() 
    { 
        DropColumn("dbo.Movies", "Rating"); 
    } 
}

Build解决方案,然后在 程序包管理器控制台窗口中输入"update-database"命令。

下面的图片显示了 程序包管理器控制台窗口的输出 (日期戳前面添加的评级会有所不同)

clip_image022

重新运行应用程序,然后浏览 /Movies 的 URL。您可以看到新的评级字段。

clip_image024

单击CreateNew链接来添加一部新电影。注意,请您可以为电影添加评级。

clip_image026

单击Create。新的电影,包括评级,将显示在电影列表中:

clip_image028

该项目目前正在使用的迁移 (migrations),当你添加新的字段或更新数据库Schema, 你不需要删除数据库。在下一节中,我们将让更多的架构更改,并使用迁移来更新的数据库。

此外您也应该把Rating 字段添加到Edit、Details和Delete的视图模板中。

您可以再次在 程序包管理器控制台窗口中输入"update-database"命令,将不会有任何新的变化,因为数据库Schema 和模型类现在是匹配的。然而,运行“update-database”将运行再次Seed方法,如果你改变任何种子数据,更改都将丢失,因为Seed的方法upserts数据。你可以阅读更多关于Seed的方法Tom Dykstra's的流行的ASP.NET MVC/Entity Framework tutorial.。

在本节中,您看到了如何修改模型对象并始终保持其和数据库Schema的同步。您还学习了使用填充示例数据来创建新数据库的例子,您可以反复尝试。这只是一个简单的介绍Code First,更完整的教程的请参阅Creating an Entity Framework Data Model for an ASP.NET MVC Application。接下来,让我们看看如何将丰富的验证逻辑添加到模型类,并对模型类执行一些强制的业务规则验证。

 

-----------------------------------------------------------------------------------------

《ASP.NET MVC 5 入门指南》12篇文章汇总如下:

1. ASP.NET MVC 5 - 开始MVC 5之旅

2. ASP.NET MVC 5 - 控制器

3. ASP.NET MVC 5 - 视图

4. ASP.NET MVC 5 - 将数据从控制器传递给视图

5. ASP.NET MVC 5 - 添加一个模型

6. ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB

7. ASP.NET MVC 5 - 从控制器访问数据模型

8. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

9. ASP.NET MVC 5 - 给电影表和模型添加新字段

10. ASP.NET MVC 5 - 给数据模型添加校验器

11. ASP.NET MVC 5 - 查询Details和Delete方法

12. ASP.NET MVC 5 - 使用Wijmo MVC 5模板1分钟创建应用

 

希望这些文章对感兴趣的朋友有所帮助,另附上PDF版的汇总文档:

《ASP.NET MVC 5 入门指南》PDF版

基于RK3588与FPGA的SDI视频处理系统:从MIPI CSI-2输入到DSI输出的全链路解析 本文深入解析了基于RK3588与FPGA的SDI视频处理系统全链路。系统利用FPGA作为高速接口转换与流管理核心,将SDI信号转换为MIPI CSI-2数据流送入RK3588进行智能图像处理与AI分析,处理结果再通过MIPI DSI回传,最终由FPGA控制编码为SDI输出,实现了专业视频接口与强大算力的高效协同。 阅读详情

相关推荐

国土变更调查中六类拓扑错误的成因分析与高效修复实践

本文深入分析了国土变更调查中六类拓扑错误的成因,包括边界不一致和不规则图形等常见问题,并提出了高效的自动化修复实践。通过智能咬合算法、引力-斥力平衡模型等核心技术,显著提升了修复效率,节省人工质检时间70%。文章还分享了实战中的避坑指南和黄金法则,为相关从业人员提供了宝贵经验。

weixin_29202213的博客 359

在html添加click事件吗,html – 将onclick事件添加到SVG元素

我在SVG教程中找到了这个例子,它解释了如何为svg元素使用onclick事件处理程序.它看起来像下面的代码:function changerect(evt){var svgobj=evt.target;svgstyle = svgobj.getStyle();svgstyle.setProperty ('opacity', 0.3);svgobj.setAttribute ('x', 300);...

weixin_29612623的博客 462

Pixel 4/4 XL 刷机小白必看:Magisk Root 全流程详解(附电信网络适配技巧)

本文为Pixel 4/4 XL用户提供了一份详尽的Magisk Root全流程指南。从解锁Bootloader、刷入Magisk,到解决电信网络VoLTE适配问题,再到隐藏Root以通过银行App检测,手把手教你安全获取系统最高权限并优化日常使用体验。

weixin_29310605的博客 264

DianJin-OCR-R1:基于推理与工具交织的视觉语言模型提升OCR能力

用于OCR的通用大型视觉语言模型(LVLMs)存在幻觉问题,会产生事实不正确的内容,并且在处理复杂文本细节时表现出感知弱点。传统的OCR专家模型准确性高,不易产生幻觉,但需要复杂且碎片化的管道才能进行全面的文档解析。现有的用于文档解析的专家视觉语言模型仍面临幻觉问题,并且由于其规模较大而产生高昂的迭代成本。

专注于AI领域前沿技术学习与分享:目标检测、图像修复、超分重建、AI工程化 2262

用SOLIDWORKS从零画一个履带机器人,手把手教你搞定底盘和传动

本文详细介绍了如何使用SOLIDWORKS从零开始设计履带式机器人,重点讲解底盘结构优化和传动系统设计的关键步骤。通过七个阶段的实战指南,包括前期规划、底盘建模、驱动系统装配、履带生成、动态模拟等,帮助工程师和爱好者掌握履带机器人的核心设计技巧,提升地形适应能力和动力效率。

weixin_30872499的博客 632

保姆级教程:用Kalibr搞定Intel D435i三目(RGB+双目)相机联合标定,附完整ROSbag录制避坑指南

本文详细介绍了如何使用Kalibr工具对Intel D435i三目相机(RGB+双目)进行高精度联合标定,包括硬件准备、ROSbag录制技巧、Kalibr标定实战及结果验证。特别针对实际工程中的常见问题提供了解决方案,帮助开发者提升SLAM和三维重建等应用的精度。

weixin_42524762的博客 405

BIO、NIO、AIO及java中NIO 与netty的 IOCP区别联系

1 有人能说清楚JAVA7 NIO NETTY IOCP之间的联系吗? 原文链接:https://www.zhihu.com/question/20853629 不过这似乎是3年前的问题? 还没有找到答案吗? 那我说一下吧 iocp和poll/epoll这些是操作系统层面的东西 iocp是win,poll(linux和unix) 后者在linux上可以改成epoll,在mac或bs...

ice-wee的专栏 3315

自动化测试软件设计:C# + VISA 库实现多接口(GPIB/USB)测试仪器控制

本文介绍了如何利用C#和VISA库开发支持多接口的自动化测试软件。VISA库作为标准化API,能够统一控制GPIB、USB等不同接口的测试设备。文章详细阐述了软件设计目标,包括多接口支持、统一控制、自动化脚本执行等功能。重点讲解了C#中VISA库的安装配置,并提供了设备控制类的核心代码实现,涵盖设备连接、命令发送、响应读取等关键操作。通过具体示例展示了GPIB和USB设备的连接方式,并扩展了自动化测试脚本功能。该方案具有高扩展性和维护性,适用于电子设备测试、生产线检测等多种场景,为自动化测试系统开发提供了实

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1709

【AI大模型前沿】NeuTTS Air:Neuphonic打造的超拟真离线语音合成模型

NeuTTS Air是由Neuphonic开发的一款超拟真、可离线运行的文本到语音(TTS)模型。它以0.5B参数的Qwen语言模型为基础,结合自研的NeuCodec音频编解码器,实现了在本地设备上的高效语音合成。NeuTTS Air不仅能够生成自然流畅、接近真人的语音,还具备即时语音克隆功能,仅需3秒音频样本即可精准复刻说话者的声音。其紧凑的架构设计使其在性能、速度和质量之间达到了绝佳的平衡,能够在中端设备上实现实时推理,广泛应用于离线语音助手、智能玩具、本地AI Agent嵌入式语音接口、游戏与互动角色

寻道AI,探索AI无限可能! 1394

FISCO BCOS(一)———搭建单群组FISCO BCOS联盟链

1、安装ubuntu依赖 sudo apt install -y openssl curl 2、创建操作目录, 下载安装脚本 创建操作目录 cd ~ && mkdir -p fisco && cd fisco 下载脚本 curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.8.0/build_chain.sh && chmod u+x build_chain.

林中有神君 6649

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

孤独的单刀 5474

[转]ASP.NET MVC 5 - 给电影表和模型添加新字段

在本节中,您将使用Entity Framework Code First来实现模型类上的操作。从而使得这些操作和变更,可以应用到数据库中。 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的。如果他们不是同步的,Entity Frame...

weixin_34101229的博客 119

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

自学MVC看这里——全网最全ASP.NET MVC 教程汇总

MVC架构已深得人心,微软也不甘落后,推出了ASP.NET MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASP.NET MVC 框架知识。与此同时,小编也推荐一款轻量级控件Compone...

3169

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ASP.NET MVC 5 - 添加一个模型

在本节中,您将添加一些类,这些类用于管理数据库中的电影。这些类是ASP.NET MVC 应用程序中的"模型(Model)"。 您将使用.NET Framework 数据访问技术Entity Framework,来定义和使用这些模型类。Entity Framework(通常称为 EF) 是支持代码优先 (Code First) 的开发模式。代码优先允许您通过编写简单的类来创建对象模型。(...

180

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
下一篇: 程序员级别鉴定书(.NET面试问答集锦)
ComponentOne服务团队
博客等级 码龄12年 5粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值