前面介紹過,頁面能夠經過提交參數的方式,控制器經過參數方式接收,可是隻介紹了基本的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); }