2010-06-07 30 views
1

用asp.net的MVC,你可以使用註釋 [必填(errormessage的=「這是必須的」)數據註解讓errormessage的出庫

如何創建這樣的:

[必需(errormessage =「ERRORXX」)]

所以我可以在數據庫中查找這個ERRORXX是什麼,並將它顯示在我的表單上。現在我的表單顯示ERRORXX。

如何創建解決我的問題的東西?

Thx!

回答

0

我想你的意思是你想讀/使用給定屬性的屬性聲明?

如果是這樣,您可以創建自己的RequiredAttribute類(以允許根據需要添加新的或更合適的屬性)。見:Attributes Tutorial

+0

我可以從requiredAttribute類繼承嗎? – Masna 2010-06-07 22:37:29

+0

Woops,我想我錯過了你的問題的重點...抱歉。雖然,不,通常你不能擴展屬性實現,因爲按照慣例,它們被標記爲密封。 – Reddog 2010-06-07 22:52:52

+0

屬性屬性在編譯到庫中時必須是固定的常量。 @Leniel的第一個鏈接顯示了我將如何通過資源文件實現你想要的。 – Reddog 2010-06-07 22:54:27

3

只是一個想法:爲什麼不從resx file拉錯誤信息?我認爲這是做這件事的常見方式。它甚至允許您輕鬆地本地化您的錯誤消息。

我認爲,通過使用資源文件(resx文件),稍後更容易更改錯誤消息。例如,可以在Word Pad中打開和編輯resx文件。你並不需要訪問與用戶名/密碼數據庫,查詢它,等

Localizing ASP.NET MVC Validation

Globalizing ASP.NET MVC Client Validation

看看這裏太:

Model Validation & Metadata in ASP.NET MVC 2

Customizing ASP.NET MVC 2 - Metadata and Validation

1

要採取的默認路徑是使用資源。 但是,我理解你的痛苦:)我已經達到的方式有點不尋常,但我會給你一個快速的破敗。 在我們的項目中,使用資源文件不是一種選擇,因爲它的方式對我們的目的太有限了,現在我不會讓你知道這些細節! :) 按照最基本的原則,我們將驗證屬性的errorMessage屬性設置爲某種「鍵」,然後將其用作在我們的CMS數據庫中查找正確(語言)響應的方式,驗證失敗(在我們使用MVC的情況下,當我們更新模型並檢查狀態時 - 全部在控制器級別)。

這與使用資源(通過指定「ErrorMessageResourceName」和「ErrorMessageResourceType」)的原理相同,但您可以根據需要進行操作。爲了清楚起見,我們最初將RequiredAttribute(作爲一個例子)擴展爲我們自己的東西,其中包括放入正確命名的參數,以便我們稍後從數據庫中檢索明智的CMS值。爲了更加清楚,我們使用MVC和自定義的HtmlHelpers來呈現我們自己的ValidationControls,它們最終會從我們的自定義註釋中消費自定義值,等等 - 這些都不影響這裏的簡化原則,這只是爲了使用「errorMessage」或類似的東西,作爲從您想要的地方查看實際消息的方式,以及您想要的時間。