2
我在列表中有一個託管元數據列。用英語的數值:Brussel用法語:Bruxelles。managedmetadata字段中的AfterProperties和BeforeProperties根據語言返回不同的字符串
我需要在ItemUpdating事件中比較之前和之後的屬性。我知道之前不能使用,因爲它會在項目更新中返回null,所以我必須使用properties.ListItem。
如果用戶使用英語的UI,那麼下面的代碼工作正常,因爲術語是相同的。
但是,如果用戶選擇法語,那麼這將無法正常工作。因爲afterproperties將是布魯塞爾
private void ValidateAssignmentDate(SPItemEventProperties properties, SPListItem item)
{
string currentBudgetSection = properties.ListItem["BudgetSection"] == null ? string.Empty : properties.ListItem.GetTaxonomyFieldValue("BudgetSection").ValidatedString.ToString();
string newBudgetSection = properties.AfterProperties["BudgetSection"].ToString();
bool budgetSectionSame = newBudgetSection.Equals(currentBudgetSection);
if(!budgetSectionSame))
{
//dosomething
他擴展方法是:(我不能改變的擴展方法)
public static TaxonomyFieldValue GetTaxonomyFieldValue(this SPListItem item, string fieldName)
{
TaxonomyFieldValue returnValue = null;
try
{
TaxonomyField taxonomyField = GetTaxonomyField(item, fieldName);
if (taxonomyField != null && taxonomyField.Id != null)
returnValue = item[taxonomyField.Id] as TaxonomyFieldValue;
}
catch (Exception ex)
{
throw;
}
return returnValue;
}