ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景
,ASP.NET MVC框架就会自动将ProductName, CategoryID, SupplierID 和 UnitPrice值映射为方法参数,传给ProductsController上的 "Create" action方法:
至此,我 们运行网站时,就有了最基本的产品输入功能: 实现添加新产品 (第三部分 - 使用HTML辅助方法实现下拉框) 我们在前面一节里创建的产品输入屏幕是可行的,但不是很友好 。具体来说,它要求用户知道正输入的产品的原始CategoryID和SupplierID成员。我们需要通过显示内含可读名称的HTML下拉框来修正这个问 题。 第一步,将修改ProductsController来向视图里传人2个集合,一个内含现有的分类列表,另一个内含产品供应商列表。我们将通 过生成一个封装这些列表的强类型的ProductsNewViewData类,然后将它传给视图来达成这个目的(你可以在第三部分中了解有关详情): 然后我们将更新 "New" action 方 法来填充这些集合,然后将它们作为ViewData传给 "New" 视图: 然后在我们的视图里,我们可以使用这些集合来生成 HTML <select> 下拉框。 ASP.NET MVC HTML 辅助方法 我们可以用来生成下拉框的一个方法是在HTML里手工生成内含 if/else 语句的 <% %> for-循环。这会给与我们对HTML的完全控制,但HTML会很乱。 一个你可以使用的干净得多的方法是利用ViewPage 基类上的"Html"辅助属性。这是个方便对象,呈示了一套HTML辅助界面方法,用于自动化HTML界面的生成。例如,在本帖子的前面 ,我们使用了 Html.ActionLink辅助方法来生成 <a href=""> 元素: HtmlHelper对象(以及我们将在以后的教程里讨论的 AjaxHelper对象)是特地设计可以通过使用"扩展方法"(VS 2008中VB和C#的一个新语言特性)来轻松地扩展的。这意味着,任何人 都可以为这些对象生成他们自己的自定义辅助方法,共享这些方法,为你所用。 在ASP.NET MVC框架将来的预览版中,我们将提供几十 个内置的HTML和AJAX辅助方法。在第一个预览版中,只有"ActionLink"方法是内置于System.Web.Extensions(目前实现核心 ASP.NET MVC框架的程序集)中的。但我们还将有一个单独的 "MVCToolkit" 下载,你可以加到你的项目中,来得到你可以在第一个 预览版中使用的的几十个辅助方法。 要安装MVCToolkit HTML辅助方法的话,只要将MVCToolkit.dll程序集添加为你的项目的引用即可 : 重新编译你的项目,然后下一次你键入 <%= Html. %> 的话,你将看到许许多多你可以使用的额外界面辅助方法: 为生成HTML <select>下拉框,我们可以使用 Html.Select()方法。每个方法都有重载的版本,在视图里有完整的intellisense: 我们可以更新我们的"New"视图,用下面的代码 ,使用Html.Select选项来显示使用CategoryID/SupplierID属性作为值,CategoryName/SupplierName作为显示文字的下拉框: 这会在运行时为我们生成适当的<select> HTML标识 : 在/Products/New屏幕上给用户一个方便的 方式来选择产品分类和供应商: 注:因为我们 还是在向服务器提交CategoryID和SupplierID值,所以我们根本不用更新ProductsController的Create Action方法来支持这个新的下拉框界面 ,这个方法还是工作的。 实现添加新产品(第四部分 - 使用UpdateFrom方法清理Create代码) 我们的ProductsController的 "Create" Action方法负责处理我们的“添加产品”场景的表单提交。目前它是以action方法参数的方式来处理进来的表 单参数的: 这个方法是可行的,但对于涉及大 量值的表单,Action方法的签名就会开始变得有点难读。而且,上面将所有进来的参数值设置到新的Product对象上的代码有点长 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |