前面介绍过,页面能够经过提交参数的方式,控制器经过参数方式接收,可是只介绍了基本的string、int类型。若是页面字段较多,实际上能够对应一个类的话,应该如何快速的处理呢?html
咱们看MovieController.cs文件,其中有两个Edit方法,一个是针对http get,另外一个是针对http post。 app
// GET: Movies/Edit/5 public async Task<IActionResult> Edit(int? id) { if (id == null) { return NotFound(); } var movie = await _context.Movie.FindAsync(id); if (movie == null) { return NotFound(); } return View(movie); }
以上方法,页面提交了一个id参数,经过id,获取对应的movie对象并显示到页面上。
此时客户页面显示的Edit.cshtml,该页面中是一个form对象,点击按钮会按照http post方式提交给movieController的Edit方法,同时提交多个参数,好比Title、Genere、Price等。
再看控制器的另外一个Edit方法,其中参数部分经过Bind方式,将多个参数映射到一个Movie对象上,这样控制器处理就更方便了。若是不用Bind,则须要逐个把参数写上去,有点繁琐。async
// POST: Movies/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Edit(int id, [Bind("ID,Title,ReleaseDate,Genre,Price")] Movie movie) { if (id != movie.ID) { return NotFound(); } if (ModelState.IsValid) { try { _context.Update(movie); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!MovieExists(movie.ID)) { return NotFound(); } else { throw; } } return RedirectToAction("Index"); } return View(movie); }