• MVC神韵---你想在哪解脱!(十一)


    为了实现这一处理,我们需要在MoviesController类中追加第二个Create方法。这个Create方法具有一个[HttpPost]属性,它意味着我们将要用它来处理提交到“/Movies/Create”这个URL地址的请求。另外,所有提交到“/Movies/Create”这个URL地址的非POST的请求(即GET请求)将被第一个Create方法进行处理,即简单地返回一个空的表单。以下代码为MoviesController类中的两个Create方法的全部代码。

    public ActionResult Create()

    {

        return View();

    }

    [HttpPost]

    public ActionResult Create(Movie newMovie)

    {

        if (ModelState.IsValid)

        {

            db.Movies.Add(newMovie);

            db.SaveChanges();

            return RedirectToAction("Index");

        }

        else

            return View(newMovie);

    }

    之前我们介绍了ASP.NET MVC可以自动地将一个URL地址中的查询字符串中的参数(例如:传递“/HelloWorld/Welcome?name=Scott&numTimes=5”)作为一个方法的参数传递到方法中。同样地,除了传递查询字符串中的参数之外,ASP.NET MVC也可以用这种方法来传递提交后的表单参数。提交后的表单参数可以作为一个独立的参数传递到一个方法中。例如ASP.NET MVC framework可以将我们提交的表单中的控件值作为参数传递到具有HttpPost属性的Create方法中

     

    [HttpPost]

     public ActionResult Create(string title, DateTime releaseDate, string genre,decimal price){

    提交的表单值也可以被映射到一个复合的,具有属性的对象(譬如我们的Movie类),并且作为一个单一的参数传递到一个方法中。请注意Create方法是怎样作为一个参数来接收Movie对象的。

     

    [HttpPost]

    public ActionResult Create(Movie newMovie)

    if (ModelState.IsValid){

          db.Movies.Add(newMovie);

          db.SaveChanges();

          return RedirectToAction("Index");

          }

         else

          return View(newMovie);

    }

    ModelState.IsValid属性用来检查提交的表单中的数据是否能够被用来创建一个Movie对象。如果数据是有效的,我们的代码将把提交上来的这个Movie类追加在MoviesDBContext对象的实例中的Movies集合中。调用我们的MoviesDBContext对象实例的SaveChanges方法将把这个Movie对象保存在数据库中。保存数据完毕后,代码把画面重定向到MoviesController类的Index方法中,浏览器中将会打开电影清单显示画面,并且在电影清单中显示刚才追加的这条数据。如果提交的值是无效的,将会返回到电影信息追加画面中,并且在表单的各输入控件中显示各自的提交的值。各输入控件的Html.ValidationMessageFor帮助器将会显示对应的出错信息。

     

     

     

  • 相关阅读:
    Codeforces 1230E
    扫描线求面积和周长 (模板,线段树)
    POJ2528
    线段树 (模板)
    Codeforces 1332B
    Codeforces 1279D
    Codeforces 1281B
    Codeforces 1288D
    8I
    8F
  • 原文地址:https://www.cnblogs.com/sonykings/p/3178582.html
Copyright © 2020-2023  润新知