快速业务通道

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
,ASP.NET MVC框架就会自动将ProductName, CategoryID, SupplierID 和 UnitPrice值映射为方法参数,传给ProductsController上的 "Create" action方法:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

至此,我 们运行网站时,就有了最基本的产品输入功能:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

实现添加新产品 (第三部分 - 使用HTML辅助方法实现下拉框)

我们在前面一节里创建的产品输入屏幕是可行的,但不是很友好 。具体来说,它要求用户知道正输入的产品的原始CategoryID和SupplierID成员。我们需要通过显示内含可读名称的HTML下拉框来修正这个问 题。

第一步,将修改ProductsController来向视图里传人2个集合,一个内含现有的分类列表,另一个内含产品供应商列表。我们将通 过生成一个封装这些列表的强类型的ProductsNewViewData类,然后将它传给视图来达成这个目的(你可以在第三部分中了解有关详情):

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

然后我们将更新 "New" action 方 法来填充这些集合,然后将它们作为ViewData传给 "New" 视图:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

然后在我们的视图里,我们可以使用这些集合来生成 HTML <select> 下拉框。

ASP.NET MVC HTML 辅助方法

我们可以用来生成下拉框的一个方法是在HTML里手工生成内含 if/else 语句的 <% %> for-循环。这会给与我们对HTML的完全控制,但HTML会很乱。

一个你可以使用的干净得多的方法是利用ViewPage 基类上的"Html"辅助属性。这是个方便对象,呈示了一套HTML辅助界面方法,用于自动化HTML界面的生成。例如,在本帖子的前面 ,我们使用了 Html.ActionLink辅助方法来生成 <a href=""> 元素:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

HtmlHelper对象(以及我们将在以后的教程里讨论的 AjaxHelper对象)是特地设计可以通过使用"扩展方法"(VS 2008中VB和C#的一个新语言特性)来轻松地扩展的。这意味着,任何人 都可以为这些对象生成他们自己的自定义辅助方法,共享这些方法,为你所用。

在ASP.NET MVC框架将来的预览版中,我们将提供几十 个内置的HTML和AJAX辅助方法。在第一个预览版中,只有"ActionLink"方法是内置于System.Web.Extensions(目前实现核心 ASP.NET MVC框架的程序集)中的。但我们还将有一个单独的 "MVCToolkit" 下载,你可以加到你的项目中,来得到你可以在第一个 预览版中使用的的几十个辅助方法。

要安装MVCToolkit HTML辅助方法的话,只要将MVCToolkit.dll程序集添加为你的项目的引用即可 :

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

重新编译你的项目,然后下一次你键入 <%= Html. %> 的话,你将看到许许多多你可以使用的额外界面辅助方法:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

为生成HTML <select>下拉框,我们可以使用 Html.Select()方法。每个方法都有重载的版本,在视图里有完整的intellisense:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

我们可以更新我们的"New"视图,用下面的代码 ,使用Html.Select选项来显示使用CategoryID/SupplierID属性作为值,CategoryName/SupplierName作为显示文字的下拉框:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

这会在运行时为我们生成适当的<select> HTML标识 :

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

在/Products/New屏幕上给用户一个方便的 方式来选择产品分类和供应商:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

注:因为我们 还是在向服务器提交CategoryID和SupplierID值,所以我们根本不用更新ProductsController的Create Action方法来支持这个新的下拉框界面 ,这个方法还是工作的。

实现添加新产品(第四部分 - 使用UpdateFrom方法清理Create代码)

我们的ProductsController的 "Create" Action方法负责处理我们的“添加产品”场景的表单提交。目前它是以action方法参数的方式来处理进来的表 单参数的:

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

这个方法是可行的,但对于涉及大 量值的表单,Action方法的签名就会开始变得有点难读。而且,上面将所有进来的参数值设置到新的Product对象上的代码有点长

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号