2017-08-23 32 views
-1

我已經應用了一些數據註釋驗證,但不知何故,我在代碼中丟失了一些東西。ASP.NET MVC數據註解與部分類不起作用

public class Person 
{ 
    public people SinglePerson { get; set; } 
    public IEnumerable<SelectListItem> ColorNames { get; set; } 
    public IEnumerable<SelectListItem> WebCustomer { get; set; } 
    public IEnumerable<SelectListItem> PreviouslyOredered { get; set; } 
} 

,這裏是我的CS

[MetadataType(typeof(peopleMetaData))] 
public partial class people 
{ 
} 

public class peopleMetaData 
{ 
    [Required(ErrorMessage = "Please enter a name")] 
    [StringLength(50, MinimumLength = 2)] 
    public string firstName { get; set; } 
} 

People類有我想要做一些驗證到firstName財產。

我錯過了什麼?

+0

您是否在控制器中應用了模型檢查? –

+0

嗨,什麼檢查? – laz

回答

0

對於客戶端驗證,請確保您已包括您的看法

+0

這是問題所在。感謝您的迴應。 – laz

+0

@laz不用擔心:) – OrElse

0

你必須檢查模型是否有效的控制

if (ModelState.IsValid) { 
    //do something 
} 
else 
{ 
return View(); 
} 
+0

謝謝你的收穫。它現在工作,但我沒有得到驗證信息顯示。 – laz

+0

謝謝,我只是在檢查。你是對的@O – laz

+0

如果你可以標記答案是正確的,以避免其他答案 –

0

你這個人類不具有firstName的屬性。 你需要在你的人類第一,那麼MetadataTypeClass

[MetadataType(typeof(peopleMetaData))] 
public partial class people 
{ 
    public string firstName { get; set; } 
} 
+0

「人」是自動生成的,歡迎你。我有一個與LINQ to SQL層一起導入的名稱的SQL表。 – laz

2

在元數據類中 @section Scripts { @Scripts.Render("~/bundles/jqueryval") } ,你不能指定「屬性」作爲全特性 - 只要是需要的類型和名稱 - 試試這個:

public class peopleMetaData 
{ 
    [Required(ErrorMessage = "Please enter a name")] 
    [StringLength(50, MinimumLength = 2)] 
    public string firstName; 
} 

看到的 - 沒有{ get; set; }firstName「property」

+0

我的解決方案現在用{get; set;}指定。爲了某種代碼可讀性,將它從解決方案中解放出來會更好嗎? – laz

+0

@拉斯:那麼你做了什麼/改變,使其現在工作? –

+1

我在佈局頁面中添加了「jqueryval」(正如@OrElse所建議的),並且我在控制器中使用了「Model.IsValid」(如@moath naj所示) – laz