日期:2014-05-16  浏览次数:20586 次

请教MVC验证问题
  以下为model中定义的类
  public class Album
  {
    public virtual int AlbumId { get; set; }
    public virtual int GenreId { get; set; }
    public virtual int ArtistId { get; set; }
    public virtual string Title { get; set; }
    public virtual decimal Price { get; set; }
    public virtual string AlbumArtUrl { get; set; }
    public virtual Genre Genre { get; set; }
    public virtual Artist Artist { get; set; }
  }

  public class Artist
  {
    public virtual int ArtistId { get; set; }
    public virtual string Name { get; set; }
  }

  public class Genre
  {
    public virtual int GenreId { get; set; }
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual List<Album> Albums { get; set; }
  }

属性都没有加 [require]之类的验证,为什么提交的时候会对属性进行服务端验证呢(客户端的验证去掉了),刚开始学mvc,请指教,谢谢啦!!!
------解决方案--------------------
不用EditorFor,因为它会得到model.Price的类型,

你可以用Html.TextBox()
------解决方案--------------------
亲  我来告诉你把,对于mvc中model验证,值类型要特别注意,字符串不用管,比如int datetime类型你必须有初始值的,你说的价格price 因为你不填写,后台取值就是空,无法转换,自然也就不能通过,当然着一系列操作是mvc自己做的,与你加不加验证标签[require]都无关系
------解决方案--------------------
public actionresult create()
{
return view(new 一个);
}
[httppost]
public actionresult create(object model)
{

}

好像这样也可以,使用Html.HiddenFor(model=>model.Price);