ASP.NET MVC3书店--第九节 注册与下订单(第一部分)
来源:互联网 发布:大数据的特征不包括 编辑:程序博客网 时间:2024/05/17 08:39
图9-1 点击“结算”链接
图9-2 登陆视图
图9-3 收货信息填写视图
图9-4 订单完成通知视图
图9-5 错误视图
9.2 转入购物车中的信息
private void MigrateShoppingCart(string UserName){ // 获取登陆用户购物车中的信息 var cart = ShoppingCart.GetCart(this.HttpContext); cart.MigrateCart(UserName); Session[ShoppingCart.CartSessionKey] = UserName;}
[HttpPost]public ActionResult LogOn(LogOnModel model, string returnUrl){ if (ModelState.IsValid) { if (MembershipService.ValidateUser(model.UserName, model.Password)) { MigrateShoppingCart(model.UserName); FormsService.SignIn(model.UserName, model.RememberMe); if (Url.IsLocalUrl(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "用户名或密码输入不正确"); } } // 登陆失败,重新显示登陆画面 return View(model);}
[HttpPost]public ActionResult Register(RegisterModel model){ if (ModelState.IsValid) { // 尝试用户注册 MembershipCreateStatus createStatus =MembershipService.CreateUser(model.UserName,model.Password, model.Email); if (createStatus == MembershipCreateStatus.Success) { MigrateShoppingCart(model.UserName); FormsService.SignIn(model.UserName, false); return RedirectToAction("Index", "Home"); } else { ModelState.AddModelError("",AccountValidation.ErrorCodeToString(createStatus)); } } // 注册失败,重新显示登陆视图 ViewBag.PasswordLength = MembershipService.MinPasswordLength; return View(model);}
9.3 创建下订单控制器
图9-6 添加下订单控制器
namespace MvcBookStore.Controllers { [Authorize] public class CheckoutController : Controller
using System;using System.Linq;using System.Web.Mvc;using MvcBookStore.Models; namespace MvcBookStore.Controllers{ [Authorize] public class CheckoutController : Controller { BookStoreEntities storeDB = new BookStoreEntities();
//// GET: /Checkout/AddressAndPaymentpublic ActionResult AddressAndPayment(){ return View();}
//// POST: /Checkout/AddressAndPayment[HttpPost]public ActionResult AddressAndPayment(FormCollection values){ var order = new Order(); TryUpdateModel(order); try { order.Username = User.Identity.Name; order.OrderDate = DateTime.Now; //保存订单 storeDB.Orders.Add(order); storeDB.SaveChanges(); //处理订单信息 var cart = ShoppingCart.GetCart(this.HttpContext); cart.CreateOrder(order); return RedirectToAction("Complete",new { id = order.OrderId }); } catch { //无效,重新返回显示错误信息 return View(order); }}
//// GET: /Checkout/Completepublic ActionResult Complete(int id) { // 验证当前用户是否拥有这张订单 bool isValid = storeDB.Orders.Any(o => o.OrderId == id&&o.Username == User.Identity.Name); if (isValid) { return View(id); } else { return View("Error"); }}
using System;using System.Linq;using System.Web.Mvc;using MvcBookStore.Models;namespace MvcBookStore.Controllers{ [Authorize] public class CheckoutController : Controller { BookStoreEntities storeDB = new BookStoreEntities(); // // GET: /Checkout/AddressAndPayment public ActionResult AddressAndPayment() { return View(); } // // POST: /Checkout/AddressAndPayment [HttpPost] public ActionResult AddressAndPayment(FormCollectionvalues) { var order = new Order(); TryUpdateModel(order); try { order.Username = User.Identity.Name; order.OrderDate = DateTime.Now; //保存订单 storeDB.Orders.Add(order); storeDB.SaveChanges(); //处理订单 var cart =ShoppingCart.GetCart(this.HttpContext); cart.CreateOrder(order); return RedirectToAction("Complete",new { id =order.OrderId }); } catch { //无效,重新返回显示错误信息 return View(order); } } // // GET: /Checkout/Complete public ActionResult Complete(int id) { // 验证当前用户是否拥有这张订单 bool isValid = storeDB.Orders.Any(o => o.OrderId ==id &&o.Username == User.Identity.Name); if (isValid) { return View(id); } else { return View("Error"); } } }}
9.4 添加收货信息填写视图
图9-7 添加收货信息填写视图
- 我们将使用Html.EditorForModel()帮助器方法来为Order(订单)模型类显示各属性编辑控件。
- 我们将对Order类使用验证属性来强制使用验证规则。
@model MvcBookStore.Models.Order@{ ViewBag.Title = "填写收货信息";}<scriptsrc="@Url.Content("~/Scripts/jquery.validate.min.js")"type="text/javascript"></script><scriptsrc="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"type="text/javascript"></script>@using (Html.BeginForm()) { <h2>填写收货信息</h2> <fieldset> <legend>收货信息</legend> @Html.EditorForModel() </fieldset> <input type="submit" value="提交订单" />}
- ASP.NET MVC3书店--第九节 注册与下订单(第一部分)
- ASP.NET MVC3书店--第九节 注册与下订单(第二部分)
- ASP.NET MVC3书店--第五节 表单编辑(第一部分)
- ASP.NET MVC3书店--第八节 使用Ajax的购物车(第一部分)
- ASP.NET MVC3书店--第五节 表单编辑(第二部分)
- ASP.NET MVC3书店--第五节 表单编辑(第三部分)
- ASP.NET MVC3书店--第八节 使用Ajax的购物车(第二部分)
- ASP.NET MVC3书店--第八节 使用Ajax的购物车(第三部分)
- ASP.NET MVC3书店--第三节+视图与视图模型
- ASP.NET MVC3书店--第四节 模型与数据库访问
- ASP.NET MVC3书店--第一节+概述
- ASP.NET MVC3书店--第二节+控制器
- ASP.NET MVC3 快速入门-第九节 实现编辑、删除与明细信息视图
- ASP.NET MVC3 快速入门-第九节 实现编辑、删除与明细信息视图
- ASP.NET MVC3 快速入门-第九节 实现编辑、删除与明细信息视图
- ASP.NET MVC3 快速入门-第九节 实现编辑、删除与明细信息视图 .
- ASP.NET MVC3 快速入门-第九节 实现编辑、删除与明细信息视图
- ASP.NET MVC3书店--第十节 为网站导航与局部设计做最后的修改
- android书籍
- sqlite3 安装和基本指令
- ASP.NET MVC3书店--第八节 使用Ajax的购物车(第二部分)
- ASP.NET MVC3书店--第八节 使用Ajax的购物车(第三部分)
- 钱都是怎么赚的
- ASP.NET MVC3书店--第九节 注册与下订单(第一部分)
- ASP.NET MVC3书店--第九节 注册与下订单(第二部分)
- ZendAMF通信类 AS3与PHP通信
- ASP.NET MVC3书店--第十节 为网站导航与局部设计做最后的修改
- ANT
- C++模板简介
- 不富都难的理财习惯
- java.lang.UnsatisfiedLinkError: Can't load library from JNI code
- linux上的GetTickCount函数