2012-06-15 66 views
0
應用驗證屬性

我有一個視圖模型沒有得到驗證錯誤回報,而在視圖模型

[CustomValidation(typeof(MyValidation), "MyMethod")] 
    [Serializable()] 
    public class TransactionViewModel 
    { 
     public string InvoiceNumber; 
    } 

public class MyValidation 
{ 

    public static ValidationResult validatelength(TransactionViewModel length) 
{ 

bool isValid; 
if (length.InvoiceNumber.Length >15) 
isValid = false; 
else 
isValid = true; 
    if (isValid) 
{ 
    return ValidationResult.Success; 
} 
else 
{ 
    return new ValidationResult(
     "The Field value is greater than 15"); 
} 
    } 
} 

現在我檢查我的類對象的某些字段如果驗證失敗,我檢查在控制器模型的狀態,並返回查看,增加了驗證消息的發票號碼,但仍然感到沒有得到

我們可以應用驗證屬性,以模型視圖中的錯誤

,PLS提供的解決方案,如果我做錯什麼

回答

1

使用

<%= this.Html.ValidationSummary() %> 

@this.Html.ValidationSummary() 

,你會得到你在找什麼。

如果您的模型狀態無效,您將收到您要查找的錯誤。

你的問題是你的錯誤是你的錯誤沒有關聯到任何類的成員。在模型狀態中,它具有密鑰「」,因爲它不與任何字段關聯。

+0

+1,你怎麼解決這個問題? I.E.確保IsValid與驗證字段相關聯?我只是想念一個構造函數? – Malkin

+1

我不太明白你的意思。如果你想驗證一個字段,使用ModelState.IsValidField(「字段」) –

+0

我只是好奇,爲什麼'@ this.Html.ValidationSummary()'顯示模型錯誤,其中「@ Html.ValidationSummary()'不? – Malkin

0

也許你忘了在你的視圖上放置驗證摘要?

<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %> 

請提交您的意見以供審覈。同時在這裏你是在那裏工作的很好的例子: Validation with the Data Annotation Validators (C#)

Model validation from Scott's blog

看看這個教程這裏handling model error,但使用空字符串鍵值:

ModelState.AddModelError(string.Empty, "There is something wrong with Foo."); 

錯誤消息將出現本身在<%:Html.ValidationSummary()%>,如你所料。

+0

我使用視圖和everthing驗證摘要工作正常,該模型沒有得到更新,但我沒有得到驗證消息,我正在正確地查看 –

+0

也許,你正在以不同的方式處理它。您是否使用ModelState.AddModelError(字符串鍵,字符串errorMessage)?在我的答案中也看一些額外的信息。 –

相關問題