mvc 3 MusicStore验证错误消息定义

时间:2014-08-14 02:38:29

标签: c# asp.net-mvc validation

我刚开始学习C#和SQL,现在正在学习MVC3。我从http://mvcmusicstore.codeplex.com/下载了免费的 ASP.NET MVC音乐商店教程 - 版本3.0b ,这是一个135页的文件。当我阅读第76页时,它是关于使用Data Annotation属性进行模型验证。这是代码:

namespace MvcMusicStore.Models
{
    [Bind(Exclude = "AlbumId")]
    public class Album
    {
        [ScaffoldColumn(false)]
        public int AlbumId { get; set; }

        [DisplayName("Genre")]
        public int GenreId { get; set; }

        [DisplayName("Artist")]
        public int ArtistId { get; set; }

        [Required(ErrorMessage = "An Album Title is required")]
        [StringLength(160)]
        public string Title { get; set; }

        [Required(ErrorMessage = "Price is required")]
        [Range(0.01, 100.00, ErrorMessage = "Price must be between 0.01 and 100.00")]
        public decimal Price { get; set; }

        [DisplayName("Album Art URL")]
        [StringLength(1024)]

        public string AlbumArtUrl { get; set; }
        public virtual Genre Genre { get; set; }
        public virtual Artist Artist { get; set; }
    }
}

在粘贴解决方案中的代码之后,我可以看到验证工作正常,但有一点我不明白:没有"必需"标记为流派艺术家的下拉列表;如果我没有选择任何内容,并单击保存按钮,则会显示以下错误消息:"类型字段是必需的" "艺术家字段是必需的& #34;

我回到之前的页面,发现它说“#34;使用@HTML.ValidationMessageFor HTML Helper"自动显示验证错误在第65页,但是当我搜索整个解决方案的两个句子时,我没有得到任何结果。

任何人都可以告诉两条错误消息的定义在哪里?

在源代码中,下拉列表定义如下:     //     // POST:/ StoreManager / Edit / 5

[HttpPost]
public ActionResult Edit(Album album)
{
    if (ModelState.IsValid)
    {
        db.Entry(album).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
    ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
    return View(album);
}

1 个答案:

答案 0 :(得分:1)

不可为空的标量值(如int,DateTime,decimal等)始终被视为必需,因为您无法在其中插入null。所以,如果你不想验证这些字段,那么使用int?对于非必需的int。

     public int? GenreId { get; set; }
     public int? ArtistId { get; set; }

不需要对字符串数据类型执行此操作,因为字符串可以为空。