2013-07-17 38 views
1

我有一個MVC中的Required屬性的問題。我有一個默認值爲「Name」的字段。當我提交表單時,MVC驗證該字段。如果該字段爲空,則顯示所需的消息。問題是,由於缺省值,不會顯示錯誤消息。C#MVC所需的方法爲默認值

是否有可能,當現場有默認值「名」 ErrorMessage也會出現。

對不起,我的英語不好:)

+1

請停止將「ASP.NET MVC」簡稱爲「MVC」。一個是框架,而另一個是獨立於語言的設計模式。這就像調用IE瀏覽器 - 「互聯網」 –

+0

@tereško我可以同樣問:「請停止將Internet Explorer簡稱爲'IE'。一個是互聯網瀏覽器,而其他的是:http://en.wikipedia.org/wiki/Ie「。我的觀點是,我們都縮寫。如果你真的想幫我們一個忙,請讓微軟重新命名這個框架。 – xr280xr

+0

@ xr280xr你失敗。因爲你試圖暗示「MVC」是「ASP.NET MVC框架」的縮寫......它不是=) –

回答

4

我會提出兩種處理方法。

首先,你可以創建一個自定義驗證屬性,其中的一個例子可以找到[這裏]。 1

這裏有一個粗略的和現成的例子:

public class ValidateDefaultValueAttribute : ValidationAttribute { 
    protected override ValidationResult IsValid (object value, ValidationContext validationContext) { 
     string value = value.ToString(); 

     if (value == "Name") 
      return new ValidationResult("Please enter a different name."); 

     return ValidationResult.Success; 
    } 
} 

或者,這聽起來像你想在輸入欄中顯示一個「名稱」?如果您使用HTML 5,請嘗試使用placeholder屬性,例如

<input type="text" placeholder="Name">

這將在現場顯示單詞「名稱」但是一旦用戶開始在字段中輸入被覆蓋。

+0

偉大的建議。我會改變'ValidateDefaultValueAttribute'(在這種情況下,默認名稱)在構造函數('[ValidateDefaultValueAttribute(VALUE =「名稱」)]')來接收'value',因此它可以在一個更通用的方法可以用於任何拒絕一些默認值的字段。 – haim770