我在列表中有一个托管元数据列。英文值:布鲁塞尔法文:Bruxelles。
我需要在 ItemUpdating 事件中比较 before 和 after 属性。我知道之前不能使用,因为它会在项目更新中返回 null,所以我必须使用 properties.ListItem。
如果用户使用英文 UI,那么下面的代码可以正常工作,因为术语是相同的。
但是,如果用户选择法语,那么这将不起作用。因为后属性将是布鲁塞尔
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;
}