我有一個ViewModel,其中包含的屬性可以可選從我的Web應用程序的用戶填充(例如名字,姓氏,電子郵件,日期出生等)。這些屬性包括幾個類型,如字符串,布爾型int,小數點,雙精度型,DateTime。所有這些類型在ViewModel中都可以爲空或不可空。如何檢查ViewModel的任何屬性是否已填充
如果這些屬性中至少有一個已被填充,那麼我必須創建一個數據庫記錄。您是否有任何想法來檢查這些可選值是否已填充?
我有一個ViewModel,其中包含的屬性可以可選從我的Web應用程序的用戶填充(例如名字,姓氏,電子郵件,日期出生等)。這些屬性包括幾個類型,如字符串,布爾型int,小數點,雙精度型,DateTime。所有這些類型在ViewModel中都可以爲空或不可空。如何檢查ViewModel的任何屬性是否已填充
如果這些屬性中至少有一個已被填充,那麼我必須創建一個數據庫記錄。您是否有任何想法來檢查這些可選值是否已填充?
按照慣例,基本數據類型是必需的。您可以使性能可爲空這是原始的如int,雙,日期主場迎戰然後:
PropertyInfo[] infos = yourObjectInstance.GetType().GetProperties();
int count = 0;
for(int i = 0; i < infos.Length; i++)
{
if(infos[i].PropertyType == typeof(string))
{
string stringValue = infos[i].GetValue(yourObjectInstance).ToString().Trim();
if(!string.IsNullOrEmpty(body))
{
count++;
}
continue;
}
if(infos[i].GetValue(yourObjectInstance) != null)
{
count++;
}
}
if(count == 0)
{
// Handle error
}
// Create record
您可以實現此代碼,通過您的視圖模型,然後計算多少字段不爲空,如果返回值> 0,那麼你可以實現你的Db工作。
public int MethodToCheckNotNull(ViewModel obj)
{
int i = 0;
PropertyInfo[] properties = typeof(obj).GetProperties();
foreach (PropertyInfo property in properties)
{
if (property.GetValue(obj) != null)
{
i++;
}
}
return i;
}
你是否實施了'INotifyPropertyChanged'? – arcticwhite
@arcticwhite不,我沒有實現它。這只是一個簡單的檢查,我必須做一旦我發佈表單到服務器。 – Dario
@arcticwhite它是一個ASP.NET核心應用程序,所以它是基於MVC的。 – Dario