簡體   English   中英

ASP.NET MVC的模型數據注釋

[英]Model DataAnnotation for asp.net mvc

有什么方法可以直接從數據庫中獲取模型的數據注釋嗎? 我有一個包含大量數據和表的數據庫,所以我用數據庫的實體框架生成我的模型,所以我得到了類,但是我想知道實體框架或其他一些ORM是否可以直接從數據庫中獲取特性和約束並將它們放入在類中作為數據注釋,例如[required]或[datatype(datatype.emailadress)]

是。 您可以繼承ModelMetadataProvider類:

public class LocalizedModelMetadataProvider : DataAnnotationsModelMetadataProvider
{

    protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType,
                                                    Func<object> modelAccessor, Type modelType, string propertyName)
    {
        var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
        if (containerType == null || propertyName == null)
            return metadata;

        // Load all metadata from your database here.

        return metadata;
    }

}

我正在創建一個名為Griffin.MvcContrib的項目,該項目已完成,並具有一個管理區域,您可以在其中處理模型和驗證消息的所有本地化(零代碼)。

通過使用它,您只需實現以下接口即可獲得對數據庫的支持:

// the actual code file has detailed explanations of each method.
public interface ILocalizedStringProvider
{
    string GetModelString(Type model, string propertyName);
    string GetModelString(Type model, string propertyName, string metadataName);
    string GetValidationString(Type attributeType);
    string GetEnumString(Type enumType, string name);

}

更新資料

哪里不重要。 而且,您不必在模型上使用DataAnnotation屬性( [Display]屬性)。 我只是繼承了DataAnnotationsModelMetadataProvider以便能夠使用屬性。

  1. 在任何地方創建課程。
  2. 從數據庫中讀取
  3. 配置MVC以在global.asax中使用它

例:

 ModelMetadataProviders.Current = new YourModelMetadataProvider();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM