1
我使用從數據庫例如DisplayText加載數據: 繼續代碼:的EntityFramework 5.0變量數據註釋
public class AtributosInModels : DisplayNameAttribute
{
string displayName;
private static int lenght;
public static int Lenght
{
get { return lenght; }
set { lenght = value; }
}
vw_UsuarioPerfilAtributoRepository vw_usuarioPerfilAtributoRepository = new vw_UsuarioPerfilAtributoRepository();
public AtributosInModels(string key)
{
_key = key;
}
public override string DisplayName
{
get
{
Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil = Perf => Perf.NomeAtributo == _key;
var entity = vw_usuarioPerfilAtributoRepository.GetSingle(expressionPerfil);
if (entity.Tamanho!=null)
lenght = entity.Tamanho.Value;
try { displayName = entity.NomeLabel; }
catch (Exception) { displayName = null; }
return string.IsNullOrEmpty(_key) ? "" : displayName;
}
}
public string _key { get; set; }
}
}
[AtributosInModels("NomeUsuario")]
[MaxLength(AtributosInModels.Lenght)]
public string NomeUsuario { get; set; }
如果代碼是凌亂的,我把全**
現在我想從數據庫加載長度,數據類型,權限,DisplayFormat。 但類模型`噸操縱變量,我試圖使用靜態方法
[MaxLength(AtributosInModels.Lenght)]
錯誤5的屬性參數必須是常量表達式,屬性參數類型的typeof運算表達式或數組創建表達式
失敗。
因此,任何建議使用MVC4最大長度? –
我不是100%確定你在做什麼,使用這個屬性的原因是什麼 - 是否用於驗證?你想如何驗證它?手動或通過內置機制驗證(例如EF驗證)。如果這是後者,則可以使用CustomValidationAttribute並將動態邏輯放在此處。我不完全掌握的是爲什麼NomeUsuario可以有不同的力量。請注意,我不是MVC專家,因此可能會漏掉一些明顯的東西。 – Pawel
這是因爲我的系統可以從數據庫加載所有的信息,所以任何出現在屏幕瀏覽器上的東西都寫在數據庫中,即使是相同的模型css也是這樣工作的,以便客戶在任何時候想要改變任何東西友好的界面和簡單(翻譯,適應任何商業,維護)。雖然在字符串長度中可能看起來有點無用,但對於各種其他數據註釋來說,它同樣適用。 –