2012-06-27 158 views
0

我有以下型號:阻止用戶

public class Contact 
{ 
    public Contact() 
    { 
     Name = "Your Name"; 
     Email = "Your Email"; 
     Message = "Your Message"; 
    } 

    [Required] 
    [StringLength(60,MinimumLength = 3)] 
    public string Name { get; set; } 

    [Required] 
    [DataType(DataType.EmailAddress)] 
    [RegularExpression(@"\b[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b")] 
    public string Email { get; set; } 

    [Required] 
    [StringLength(2200, MinimumLength = 10)] 
    [DataType(DataType.MultilineText)] 
    public string Message { get; set; } 
} 

對於消息和名稱,它們的默認值(在構造函數)實際上通過驗證,顯然這是壞的。我知道我可以檢查這個並在控制器中拋出錯誤,但我試圖找到一種方法在模型中執行這些操作(因爲我認爲這是正確的地方)。

回答

2

我不會在所有的服務器端做到這一點。使用文本框水印ala爲ex的許多方法之一。

http://code.google.com/p/jquery-watermark/

+0

感謝您的建議 - 我確實熟悉水印並始終使用它。我只是試圖分支出來,更多地瞭解驗證 - 你會認爲這不是最佳做法嗎? –

+0

客戶端默認的水印對我來說很好,它避免了在模型中繞過默認值 - 黑客:) –

1

那些看起來像提示,而不是默認值。你應該用javascript來實現,而不是將它們設置爲輸入值。

+0

喜歡的東西設定值,並防止它們是否匹配的默認值提交?我已經考慮過(或者只是使用水印),但我試圖擺脫我的舒適區,並更多地關注模型和驗證。但是,如果JS方式確實是最佳實踐,那麼我會恢復到這一點。 –