电子商务[转自Scott]ASP.NET MVC框架(第四部分): 处理表单编辑和交给场景

五、项目实战

1、WEB在线文件管理器

作嗷嗷待补的程序猿,我们当时时刻刻觅食,不断吸收及摆布新技巧和新知识,而作PHP开发中我们必不可少的同等件就是文件目录函数库。通过以课程文件目录函数库底学,可以把他采用及我们实在项目蒙实现对品种文件目录的治本,如果你具备前端的技术,可以拿它们换得再花!

2、手把手教您兑现电商网站开

电商网站为主制作流程,通过整站分步的教学被学员了解与操纵电商网站打的流水线及注意事项,运用网站外拟了之知识点的总是掌握整站的支付过程,增加出经历。

3、手把手教您兑现电商网站后台开发

依网自慕课网电子商务系统的需求分析、数据表设计入手,从后台搭建,到后台模块实现,由浅入深教你什么样搭建电子商务系统,包括前台数据的示并详尽讲解了电商系统出流程及支付过程被见面逢的题目同如何化解。

兑现编辑产品效果(第二片 – Edit Action)

咱俩将通过实现ProductController的Edit
action方法来起启用我们运用之编纂功能。当我们当本贴子的初始创建产品列表网页的早晚,我们是这样建造的,Edit
action将受一个当URL一部分底id参数(譬如,/Products/Edit/5):

电子商务 1

俺们怀念要Edit
Action方法从数据库中赢得适当的产品对象,以及现有的出品供应商与归类集合(这样,我们得在我们的修视图里心想事成这些东西对应的下拉框)。我们拿使用下的ProductsEditViewData对象来定义一个强类型的视图对象来表示所有这些数据:

电子商务 2

下一场,我们好实现我们的Edit action方法来填充这个viewdata对象,在”Edit”
视图中显示:

电子商务 3

亚、实用案例

1、GD库实现图片水印以及缩略图

论课程将指引大家经过PHP中的GD库巧妙的贯彻图片水印以及缩略图功能,大家可以轻松掌握案例的实现思路,同时课程中呢教了怎样拿这个过程封装成类,可以更进一步加深对面向对象的解。

2、PHP实现验证码制作

由此分析验证码实现原理,以基础之字+字母验证码,分析讲解实现方式。并举一反三的教如何落实中文、图片、视频验证码。其中会穿插讲解实现过程被恐怕出现的技术难题、隐患。

3、PHP实现公文上传与下载

比如课程教授了文本上传的法则与配备,并引导大家以面向对象和面向过程简单栽方式,完成了针对单文件和多文本上传的处理,以及文件下充斥功能的贯彻,通过本学科的就学,能够左右对文本上传和下载的拍卖办法,并强化对类与面向对象的包装的亮。

实现编辑产品功效(第三组成部分 – Edit 视图)

咱得以使下述方法来贯彻Edit.aspx视图网页:

电子商务 4

只顾我们是怎样以使用方面例子中之Html.TextBox和Html.Select辅助方法来的。这2独办法还是自MVCToolkit.dll程序集中之扩展方法。

专注Html.Select辅助方法发生只重载版本,允许而指定下拉框中之选定值是呀。在脚的代码片断中,我代表自己要Category下拉框根据编产品即之CategoryID值自动选择之一平项:

电子商务 5

末尾,注意我们是怎么用Url.Action()辅助方法来安<form>元素的action属性的:

电子商务 6

Url.Action和Html.ActionLink这2单援助方法都运了ASP.NET
MVC框架的途径选择引擎来生成URL(参阅次组成部分坐询问URL生成原理的底细)。这代表,如果我们改变我们网站的修功能的路子选择规则吧,我们不欲转移控制器或视图中之另代码。例如,我们好以我们的URL做还照射,换掉/Products/Edit/1,而是利用象/Products/1/Edit这样再具RESTful的URL的言辞,上面的控制器和视图代码不用做更改,而依旧会工作。

三、Web进阶

1、jQuery基础课程

据学科分为11单章,前四只章节重点介绍jQuery中选择器的使方式,第五、六章节介绍jQuery如何操作DOM元素,在第七、八章中,详细介绍jQuery中的动画片特效和Ajax的调用过程,从第九章到最终,着重介绍和jQuery相关的常用插件与UI插件的应用办法。

2、Ajax全接触

本学科通过一个略的例证,由浅入深,循序渐进的牵线了Ajax的相关概念、原理、实现方式同运用措施,包含HTTP请求的定义、PHP的简短语法、JSON数据格式、Ajax的原生和jQuery实现、跨域等知识点。

每当今日的帖子里,我将讨论你得用MVC框架来拍卖表单输入和交给场景的各种措施,以及讨论一些若得为此来简化数据编辑场景的HTML辅助方法。点击这里下载我们用于底下为说明这些概念而修筑的一体化的运之源代码。

季、实用工具

本子管理工具介绍—Git篇

按学科要教授了git在各平台的安和基本使用,Git能够拉我们缓解文件之交由、检出、回溯历史、冲突解决、多总人口搭档模式相当于问题,并且大大提升我们的工作效率。

落实编辑产品功效(第一片段 – 背景知识)

而今为我们来兑现网站“编辑产品”的功能。我们最终想要用户在造访/Products/Edit/[ProductID]
URL时相象下面这样的屏幕:

电子商务 7

暨方的“添加新产品”表单提交例子一样,我们将采取2个ProductsController
Action方法来促成者表单编辑交互,我们用如这2只道呢”Edit”和”Update”:

电子商务 8

“Edit” 会显示产品表单,”Update”会吃用来处理表单的付行动。

一致、PHP核心技术精华

1、PHP进阶篇

经PHP学习之进阶篇的上,你得对PHP的理论知识由浅入雅有再次不行一步之掌握,这些知识能够如您更周到的左右PHP,从而帮助你当实际上工作面临采取PHP快速开网站先后。

2、鬼斧神工之正则表达式

准学科通过实际的一块命令演示与形象之概念介绍连为PHP语言为蓝本,让有些伙伴等打听正则表达式的基本语法以及明正则表达式在骨子里支出被之雄强用处。

3、PHP面向对象编程

遵照学科通过讲述面向对象的基本概念以及有关的案例实践,让有些伙伴等对面向对象有一个中坚的认,能够支配把实际问题抽象成为近乎对象用以缓解实际问题之计,掌握面向对象的最要的为主能力。

4、Duang~MySQLi扩展库来传承

准学科由面向对象和面向过程少单地方,讲解了MySQLi的具体采用及注意事项,最后经任刷新评论系统的实战演练,详细剖析实际开支被怎样下MySQLi完成对数据库的操作。

5、PDO—数据库抽象层

PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,PDO解决了数据库连接不联合之问题,本学科为MySQL数据库也条例,讲解了PDO的安与布局方式,以及操作数据的函数,此外尚介绍了PDO的事务处理相关知识,最后经过实战演练深入解析PDO以加重理解。

6、JSON应用场景和实战

今Json数据因少小、读取方便等优点,越来越为大开发人员喜欢。本课分为两有,前半局部详细介绍JSON的基础知识,后半片通过简单只实站案例再加深对Json的懂得,并演示Json在依次实际状况的用法。

7、PHP实现页面静态化

妇孺皆知,页面静态化是门户网站研发中必要的如出一辙起技术,本课程由纯静态化和伪静态化两独角度开展剖析,带领大家掌握在PHP中哪些好成纯静态化页面,在WEB服务器受到怎样布置伪静态,帮助大家掌握又平等起加薪利器。

结语

盼望以帖子提供了在ASP.NET
MVC框架中争处理表单输入和付出场景的一部分细节,还提供了您得什么处理以及结构化常见数据输入和编制场景的组成部分背景。

点击这里下载一个内含我们以点盖的总体应用源代码的.ZIP
文件。

当将来之帖子里,我用讨论如何处理表单输入和编场景被多少印证和错误复原的图景。我将讨论一些促进快速利用开发之放的多少与平安支架(scaffolding)。我拿讨论你什么样以MVC框架中采取ASP.NET
AJAX进行启用AJAX的编辑。我还以对准什么样单元测试控制器和向阳控制器添加依赖注入做透的探讨。

盼望本文对君具备帮助,

Scott

=

英文原稿地址:http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx
翻原文地址:http://blog.joycode.com/scottgu/archive/2007/12/10/112465.aspx

本文将自PHP核心、实用案例、Web进阶、实用工具、项目实战就5挺方面来排上PHP进阶精华课程。

实现上加新产品(第一有-背景知识)

今吃咱来落实网站的“添加新产品”表单提交功能,最终我们想只要用户在访问/Products/New
URL时看到象下面这样的亮:

电子商务 9

在ASP.NET
MVC框架中,表单输入和编制场景一般是经当Controller类上展示2独Action方法来处理的。第一个Controller
Action方法负责发送含有要显示的初步表单的HTML。第二只Controller
Action方法虽然当处理由浏览器发回之另表单提交。

像,对地方的“添加产品”屏幕,我们见面选择以ProductsController上之2个例外action中来贯彻:一个于”New”,另一个给”Create”。/Products/New
URL负责显示一个分包HTML文本框和下拉框控件的空表单,让用户输入新产品之底细。然后,这个网页上的HTML
<form>元素以该action属性设置也 /Products/Create
URL。这表示当用户点击表单提交按钮时,表单的输入将受发送至”Create”
action方法上处理以及更新数据库。

电子商务 10

实现以类列出的出品列表

咱只要贯彻之网站的第一部分以凡产品列表URL
(/Products/Category/[CategoryId]) :

电子商务 11

咱以动用我们的ProductsController类上之”Category”
action方法来落实之效应。我们拿用LINQ to SQL
DataContext类,和咱们向内添加的GetCategoryById辅助方法,来收获一个Category对象,该目标表示了由于URL
(譬如, /Products/Category/3)
指定的某部特定分类。然后我们将拖欠Category对象传被”List”视图来从中生成回复:

电子商务 12

当促成我们的List视图时,我们先是用创新我们网页的后台代码,从ViewPage<Category>继承而来,这样页面的ViewData属性将凡自咱的控制器传过来的Category对象的类(老三局部针对之起详细座谈):

电子商务 13

接下来我们将象下面这样实现List.aspx:

电子商务 14

方的视图在页面顶端显示了归类名,然后显示了分类内之所有成品之类型列表。

于路列表的每个产品边,有只 “Edit”
链接。我们是用当次组成部分遇讨论了的Html.ActionLink辅助方法来显示这些HTML超链接(譬如,<a
href=”/Products/Edit/4″>Edit</a>)的,在”Edit”链接给点击后,用户以让导向到”Edit”action方法。然后我们尚用采用Html.ActionLink辅助方法以页面底部生成一个<a
href=”/Products/New”>Add New
Product</a>链接,在该链接给点击后,用户将被导向到”New”
action方法。

当我们看 /Products/Category/1
URL时,在浏览器被查阅源码的话,你晤面小心到我们的ASP.NET
MVC应用输出了非常彻底的HTML和URL标识:

电子商务 15

这个系列的第一篇建了一个概括的电子商务产品列表/浏览网站。它讨论了MVC后面的高层次之概念,示范了争开始创建一个新的ASP.NET
MVC项目,实现与测试者电子商务产品列表功能。系列的第二篇本着ASP.NET
MVC框架的URL路径选择(routing)架构做了深入探讨,讨论了它的劳作原理同若怎么以她来拍卖又高级的URL路径选择场景。
第三篇座谈了控制器是安和视图做交互的,特别地讨论了卿可拿视图数据由控制器传被视图以显示返回到客户端的复的各种法子。

贯彻互补加新产品 (第三有 – 使用HTML辅助方法实现下拉框)

咱以面前一省里创建的制品输入屏幕是卓有成效的,但切莫是深和睦。具体来说,它要求用户了解刚刚输入的出品之原始CategoryID和SupplierID成员。我们得通过显示内含有而读名称的HTML下拉绳来修正这个问题。

首先步,将改ProductsController来向视图里传人2独集聚,一个内含现有的归类列表,另一个内含产品供应商列表。我们以通过转变一个卷入这些列表的强类型的ProductsNewViewData类,然后拿其污染于视图来上这目的(你可以其三部分着打听关于详情):

电子商务 16

然后我们拿履新 “New” action
方法来填充这些聚集,然后以它作为ViewData传被 “New” 视图:

电子商务 17

下一场在我们的视图里,我们得以用这些聚集来生成 HTML <select>
下拉框。

ASP.NET MVC HTML 辅助方法

我们可以就此来深成下拉绳的一个办法是于HTML里手工生成内富含 if/else 语句的
<% %> for-循环。这会受跟我们对HTML的一点一滴控制,但HTML会大乱。

一个而可以的清得多之方法是利用ViewPage基类上的”Html”辅助属性。这是个有利于对象,呈示了相同效HTML辅助界面方法,用于自动化HTML界面的扭转。例如,在本帖子的前,我们采取了
Html.ActionLink辅助方法来变化 <a href=””> 元素:

电子商务 18

HtmlHelper对象(以及我们拿当此后的教程里讨论的AjaxHelper对象)是特意设计好经过采用”推而广之方法”(VS
2008中VB和C#的一个新语言特色)来轻松地扩张的。这意味,任何人都得以呢这些目标十分成他们好的自定义辅助方法,共享这些方式,为汝所用。

当ASP.NET
MVC框架将来底预览版中,我们以提供几十只放置的HTML和AJAX辅助方法。在率先独预览版中,只有”ActionLink”方法是外厝System.Web.Extensions(目前贯彻核心ASP.NET
MVC框架的程序集)中之。但咱尚用生出一个独立的 “MVCToolkit”
下载,你可以加到你的路蒙,来收获你得在率先单预览版中以的底几十只辅助方法。

要是设置MVCToolkit
HTML辅助方法吧,只要以MVCToolkit.dll程序集添加为而的类型之援即可:

电子商务 19

再也编译你的项目,然后下同样不行你键入 <%= Html. %>
的话语,你用张巨大而可利用的额外界面辅助方法:

电子商务 20

也生成HTML
<select>下拉框,我们可以动用Html.Select()方法。每个方法还起重载的版,在视图里有整体的intellisense:

电子商务 21

咱俩可创新我们的”New”视图,用脚的代码,使用Html.Select选项来显示应用CategoryID/SupplierID属性作为价值,CategoryName/SupplierName作为显示文字的下拉框:

电子商务 22

即时会以运转时也咱转移适当的<select> HTML标识:

电子商务 23

于/Products/New屏幕上给用户一个便于之不二法门来摘取产品分类和供应商:

电子商务 24

注:
因为我们还是当为服务器交由CategoryID和SupplierID值,所以我们从来不用更新ProductsController的Create
Action方法来支撑之新的下拉框界面,这个法要工作的。

兑现补充加新产品(第二部分 – 第一种办法)

脚是我们可为此来促成ProductsController的一个上马实现。

电子商务 25

瞩目点,在论及产品大成过程被,我们发出2单action方法, – “New” 和
“Create”。 “New” action方法只有是粗略地奔用户展示一个空白表单。”Create”
action方法虽然处理由表单提交过来的值,根据这些价值当数据库中生成一个新产品,然后拿客户转向到成品之归类列表网页。

出殡到客户端的HTML表单,是以由”New”
action方法调用的”New.aspx”视图里实现的。这个视图的一个始发实现(每个输入还为此了文本框)看上去象下面这样:

电子商务 26

顾点,我们以网页上以了业内的 HTML <form> 元素,而非是form
runat=server。表单的”action”属性让设置也ProductsController上之”Create”
action方法。在页面底部的<input
type=”submit”>元素让点击时,提交就会见生,之后,ASP.NET
MVC框架就会自动将ProductName, CategoryID, SupplierID 和
UnitPrice值映射为艺术参数,传被ProductsController上的 “Create”
action方法:

电子商务 27

至此,我们运行网站时,就有矣极其基本的成品输入功能:

电子商务 28

盖我们ProductsController控制器

我们以以单一控制器类来兑现即时三只主导用户浏览体验,我们拿称是决定器类为“ProductsController”(在Controllers子目录及右击,选择“添加新项”
-> “MVC 控制器”来创造是仿佛:

电子商务 29

咱们的 ProductsController 类将透过兑现”Category”, “New”, 和”Edit”
等action方法来拍卖象/Products/Category/3, /Products/New,
/Products/Edit/5这样的URL:

电子商务 30

思询问这些URL是什么样导向到 ProductsController
类的action方法及的语,请阅读我之ASP.NET
MVC系列之率先有的和仲有的。在本文的事例里,我们以祭默认的/[Controller]/[Action]/[Id]路线映射规则,这意味着我们不要配置什么事物,路径导向就会见活动出。

咱们控制器的Action方法以运用三独视图网页,用以显示输出。”List.aspx”,
“New.aspx”, 和 “Edit.aspx” 网页将处 \Views\Products
子目录下,这些网页将基于\Views\Shared目录中之Site.Master母版页上。

咱俩的数据模型

咱将使用SQL Server
Northwind样品数据库来存储我们的数额。然后我们以使用.NET 3.5坐的LINQ to
SQL对象关系映射器(ORM)来针对Product, Category, 和
Supplier对象开展建模,这些目标表示了俺们的数据库数据表中的记录行。

同等开始,在ASP.NET MVC项目中,右击/Models子目录,选择“添加新项” ->
“LINQ to SQL 类”,调出 LINQ to SQL ORM
设计器来对咱们的多寡对象建模:

电子商务 31

下一场我们用于路面临开创一个NorthwindDataContext部分接近(partial
class),向内加加有支援方法。我们定义这些帮扶方法有2只因:
1)避免在我们的Controller类中直接坐我们的LINQ查询,2)
将允许我们在将来重新易于地转移我们的控制器以应用dependency
injection(依赖注入)。

咱将丰富的NorthwindDataContext辅助方法是形象下这样的:

电子商务 32

怀念更了解LINQ和LINQ to
SQL的语句,请参见我这里的LINQ
to SQL系列。

过去之几乎独礼拜内,我直接当形容着谈论我们正在开之新ASP.NET
MVC框架的多重贴子。ASP.NET MVC框架是只你可据此来结构化你的ASP.NET
web应用,使之具备清晰的体贴分离,方便你单元测试代码和支持TDD流程的可选方法。

表单输入和交给场景

为示范怎么在ASP.NET
MVC框架中处理表单输入和提交场景的有些为主条件,我们将修一个简易的成品列表,产品变,和成品编辑场景。它将富有三独中心的用户体验:

遵照类列出之产品列表

经过导航及/Products/Category/[CategoryID]
这样的URL,用户用能看出在某某特定产品分类内之具备产品的列表:

电子商务 33

增补加新产品

用户将会由此点击上面的“添加新产品”的链接往公司里上加一个初产品。点击后,会变动到/Products/New
URL,在这边,系统将唤起用户输入而长的新产品之底细:

电子商务 34

在点击Save(保存)之后,产品就会加加到数据库被,然后就是见面转化返回到成品列表网页。

编纂产品

在产品列表网页上,用户可以点击每个产品边的“Edit”(编辑)链接。这会改到/Products/Edit/[ProductID]
URL,在这边,用户可改变产品的细节,然后点击Save按钮,往数据库里创新:

电子商务 35

贯彻编辑产品功效(第四片段 – Update Action)

末尾一步是促成ProductController类上之”Update” action方法:

电子商务 36

同前面的”Create”
action方法一致,我们用运用”UpdateFrom”扩展方法来打呼吁中自行填写我们的出品对象。但注意,填充的莫是一个空对象,我们以了一个模式,先由数据库被得到老的值,然后对它们用用户做的变动,然后更新至数据库中。

编译完毕之后,我们再次定向到产品列表网页,自动安装
/Products/Category/[CategoryID],以相当我们在操作的出品之保存的状态。

落实上加新产品(第四局部 – 使用UpdateFrom方法清理Create代码)

咱的ProductsController的”Create”
Action方法负责处理我们的“添加产品”场景的表单提交。目前她是盖action方法参数的法门来处理上的表单参数的:

电子商务 37

这个方法是中的,但对此涉大量值的表单,Action方法的署名就会起来转换得起接触难读。而且,上面用装有进入的参数值设置到新的Product对象及之代码来硌长,而且单调。

只要你引用了MVCToolkit程序集,你得行使在System.Web.Mvc.BindingHelpers命名空间下促成之一个使得的扩张方法,来对斯代码作些清理。这个扩展方法叫做“UpdateFrom”,可以用当另
.NET
对象及。它承受一个字典作为参数,然后,它会指向任何匹配该目标的明属性的键,自动对自家进行性赋值。

譬如,我们可以更写咱俩地方的Create
action方法,来用UpdateFrom方法,象这样:

电子商务 38 

横流:
如果您坐安之原故,想如果双重显眼把,只同意一些性能可以创新的言辞,你还得于UpdateFrom方法传入一个得创新的性名称的字符串数组:

电子商务 39

Leave a Comment.