2015-12-15 65 views
-1

這是我的電影控制器.....爲什麼服務器端驗證不起作用?

public class MoviesController : Controller 
{ 
    MoviesEntities db = new MoviesEntities(); 
    public ActionResult Index() 
    { 
     var movies = from m in db.Films 
        where m.ReleaseDate > new DateTime(1989, 12, 20) 
        select m; 
     return View(movies.ToList()); 
    } 

    public ActionResult Create() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Create(Film newFilm) 
    { 
     ..some code for adding new movie in the database 
    } 
} 

,創造了電影類模型

namespace Movies.Models 
{ 

    [MetadataType(typeof(MovieMetadata))] 
    public partial class Movie 
    { 
     class MovieMetadata 
     { 
      [Required(ErrorMessage = "*")] 
      public string Title { get; set; } 

      [Required(ErrorMessage = "*")] 
      [Range(5, 100, ErrorMessage = "Movies cost between $5 and $100.")] 
      public decimal Price { get; set; } 
     } 
    } 
} 

這應該給我正確的驗證..但範圍不工作.. 也...他們正在添加到數據庫中

+0

已所示的POST方法具有模型,該模型的typeof'Film'但已示出的模型是typeof運算'Movie' –

+0

使用ModelState.IsValid在控制器或啓用jQuery驗證 –

+0

正如@StephenMuecke提到的,你是顯示電影類,但是你的POST方法接收類型爲Film的對象。請編輯你的問題來解釋。 – sachin

回答

0
[HttpPost] 
public ActionResult Create(Film newFilm) 
{ 
    if (ModelState.IsValid) 
    { 
    ..some code for adding new movie in the database 
    } 
} 

做到這一點。關於正在說的或者JQuery驗證的Aman的評論。客戶端驗證不能替代服務器驗證。因此,請始終在客戶端旁邊使用ModelState驗證。

+0

我告訴服務器端使用ModelState.IsValid和客戶端使用jQuery驗證的給定問題。我給出了一個提示,但沒有詳細的解釋。一位優秀的開發人員可以根據這個提示開展工作,但不幸的是,你不明白我說的是什麼。 –

+0

我明白你的意思了。我只是想向P33K說明驗證不是客戶端或服務器端。 –