2015-12-15 27 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说明验证不是客户端或服务器端。 –