快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
于\Views\Shared目录中的Site.Master母版页上。

实现按类列出的产品列表

我们要实现的网站的第一部分将是产品列表URL (/Products/Category/[CategoryId]) :

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

我们将使用我们的ProductsController类上的 "Category" action方法来实现这个功能。我们将使用LINQ to SQL DataContext类,和我们往其中添加的GetCategoryById辅助方法 ,来获取一个Category对象,该对象代表了由URL (譬如, /Products/Category/3) 指定的某个特定分类。然后我们将该Category对象传给 "List"视图来从中生成回复:

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

在实 现我们的List视图时,我们首先将更新我们网页的后台代码,从ViewPage<Category>继承而来,这样页面的ViewData属性将是从我们的 控制器传过来的Category对象的类型(第三部分对此有详细讨论):

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

然后我们将象下面这样实现List.aspx:

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

上面的视图在页面上方显示了分类名称,然后显示了分类内 的所有产品的项目列表。

在项目列表的每个产品旁边,有个 "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标识:

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

实现添加新产品(第一 部分-背景知识)

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

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

在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方法上来处理和更 新数据库。

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

实现添加新产品(第二部分 - 第 一种方法)

下面是我们可以用来实现ProductsController的一个初始实现。

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

注意上面,在涉及产品生成过程中,我们有2个action方法 , - "New" 和 "Create"。 "New" action方法只是简单地向用户显示一个空白表单。"Create" action方法则处理从表单提交过来的值,根据这些值在数据库中生成一个新产品,然后将客户转向到产品的分类列表网页。

发送到客户 端的HTML表单,是在由"New" action方法调用的"New.aspx"视图里实现的。这个视图的一个初始实现(每个输入都用了 文本框)看上去象下面这样:

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

注意上面,我们 在网页上使用了标准的 HTML <form> 元素,而不是form runat=server。表单的"action"属性被设置为ProductsController 上的"Create" action方法。在页面底部的<input type="submit">元素被点击时,提交就会发生,之后

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号