如果開發者是使用DB first Model應該都會有這種經驗,我們為了要驗證欄位填寫是否正確,會在model的class中加上一些驗證屬性
public partial class book
{
[Required(ErrorMessage = "請輸入書名")]
public string bookName{ get; set; }
}
可是當我們使用開發工具更新Model.edmx時,我們所新增的驗證欄位會被全部清除。以前我索性就不要使用驗證的功能了,自行在前端撰寫驗證程式。或是簡單點,在text屬性中加入required就好了
直到我在書上有看到解決方式
1. 在Model資料夾中新增一個Partials資料夾,並新增一個同名的class(book.cs)
2. 將原本book.cs中的程式複製到Partials.book中
namespace Sample.Models
{
[MetadataType(typeof(bookMetadata))]
public partial class book
{
public class bookMetadata
{
[Required(ErrorMessage = "請輸入書名")]
public string bookName { get; set; }
}
}
}
3. 在建立Partials資料夾時,資料夾中的class的命名空間會自動加上Partials(Sample.Models.Partials)。記得要把.Partials移除,不然不會成功
4. 在編譯時,會將兩個book.cs合成同一個,使用上必須是同一個專案,同樣的命名空間,同樣的class名稱。
參考資料:ASP.NET MVC 開發美學
沒有留言:
張貼留言