ASP.NET MVC中的订购功能

时间:2017-04-30 17:40:41

标签: asp.net asp.net-mvc

我正在开发Rent-a-car应用程序,到目前为止,我已经实施了管理员在数据库中创建和保存汽车的工作。现在我想添加为注册用户订购这些汽车的功能。我还要添加页面''MyBookings'',用户可以看到他们当前订购的汽车和之前订购的汽车。

我想知道实现这个的最简单方法是什么,你会怎么做?

对于用户注册和管理,我使用ASP.Net Identity 2.

这是我的车型:

public class Car
{
    [Key]
    public int CarID { get; set; }
    public string Model { get; set; }
    [DisplayName("Year of production")]
    public int YearOfProduction { get; set; }
    public string Price { get; set; }
    public virtual ICollection<FilePath> FilePaths { get; set; }
    [DisplayName("Air Conditioning")]
    public string AirConditioning { get; set; }
    [DisplayName("Engine")]
    public string EngineType { get; set; }
    public string Transmission { get; set; }
    public string Suitcases { get; set; }
    public string Seats { get; set; }
}

这是我的CarsController:

public class CarsController : Controller
{
    private CarContext db = new CarContext();

    // GET: Cars
    public ActionResult Index()
    {
        return View(db.Cars.ToList());
    }

    // GET: Cars/Details
    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        //Car car = db.Cars.Find(id);
        Car car = db.Cars.Include(i => i.FilePaths).SingleOrDefault(i => i.CarID == id);
        if (car == null)
        {
            return HttpNotFound();
        }
        return View(car);
    }

    // GET: Cars/Create
    [Authorize(Roles = "Administrator")]
    public ActionResult Create()
    {
        return View();
    }

    // POST: Cars/Create
    [Authorize(Roles = "Administrator")]
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(
        [Bind(
            Include = "CarID,Model,YearOfProduction,Price,AirConditioning,EngineType,Transmission, Suitcases, Seats"
            )] Car car, HttpPostedFileBase upload)
    {
        if (ModelState.IsValid)
        {
            if (upload != null && upload.ContentLength > 0)
            {
                var photo = new FilePath
                {
                    FileName = Guid.NewGuid().ToString() + System.IO.Path.GetExtension(upload.FileName),
                    //uniqueness of the file name
                    FileType = FileType.Photo
                };
                car.FilePaths = new List<FilePath>();
                upload.SaveAs(Path.Combine(Server.MapPath("~/Images/Cars"), photo.FileName));
                car.FilePaths.Add(photo);

            }
            db.Cars.Add(car);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(car);
    }



    // GET: Cars/Edit
    [Authorize(Roles = "Administrator")]
    public ActionResult Edit(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Car car = db.Cars.Find(id);
        if (car == null)
        {
            return HttpNotFound();
        }
        return View(car);
    }

    // POST: Cars/Edit
    [Authorize(Roles = "Administrator")]
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(
        [Bind(
            Include = "CarID,Model,YearOfProduction,Price,AirConditioning,EngineType,Transmission, Suitcases, Seats"
            )] Car car, HttpPostedFileBase upload)
    {
        if (ModelState.IsValid)
        {
            if (upload != null && upload.ContentLength > 0)
            {
                var photo = new FilePath
                {
                    FileName = Guid.NewGuid().ToString() + System.IO.Path.GetExtension(upload.FileName),
                    //uniqueness of the file name
                    FileType = FileType.Photo
                };
                car.FilePaths = new List<FilePath>();
                upload.SaveAs(Path.Combine(Server.MapPath("~/Images/Cars"), photo.FileName));
                car.FilePaths.Add(photo);

            }
            db.Cars.Add(car);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(car);
    }


    // GET: Cars/Delete
    [Authorize(Roles = "Administrator")]
    public ActionResult Delete(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Car car = db.Cars.Find(id);
        if (car == null)
        {
            return HttpNotFound();
        }
        return View(car);
    }

    // POST: Cars/Delete
    [Authorize(Roles = "Administrator")]
    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public ActionResult DeleteConfirmed(int id)
    {
        Car car = db.Cars.Find(id);
        db.Cars.Remove(car);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

这是我的CarContext:

  public class CarContext : DbContext
{
    public CarContext() : base("MyConnectionString")
    {
        Database.SetInitializer<CarContext>(null);
    }

    public DbSet<Car> Cars { get; set; }
    public DbSet<FilePath> FilePaths { get; set; }
}

1 个答案:

答案 0 :(得分:0)

按生产年份ASC订购汽车的示例

db.Cars.OrderBy(i=>i.YearOfProduction)

按生产年份DESC订购汽车的示例

db.Cars.OrderByDescending(i=>i.YearOfProduction)