I want to check CRM form fields value empty or not at C# plugin code.
Entity ent;
if(ent.Attributes["telephone2"].ToString()==string.Empty)
{
Console.WriteLine("");
}
ent.Attributes["telephone2"].ToString() this is throwing KeyNotFoundException when telephone2 field's value is empty. Now I need to check the value of telephone2 before it throws exception
答案 0 :(得分:3)
从实体获取字段值的首选方法是使用GetAttributeValue<T>
方法。
在Dynamics CRM中,系统永远不会返回null
或string.Empty
值,因此当 属性存在时检查这些值是没有用的。只需读取这样的值:
string phoneNumber = ent.GetAttributeValue<string>("telephone2");
if (phoneNumber != null)
{
// do something...
}
答案 1 :(得分:1)
下面的代码段可能会有所帮助。我有一个插件,可以在创建和更新实体“ ita_trainingconfiguration”记录时验证字段“ ita_notestallowedmessage”,以检查该字段是否为空。在与“ita_notestallowedmessage”领域的一些价值创造的记录,如果我更新字段的值“ita_notestallowedmessage”为空,然后在输入参数后,我的情况下,我得到空字符串,而不是空。因此,最好检查String.IsNullOrEmpty(value)而不是仅在这种情况下检查null。
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity entity = (Entity)context.InputParameters["Target"];
if (entity.LogicalName != "ita_trainingconfiguration")
return;
if (!entity.Contains("ita_notestallowedmessage") && context.MessageName == "Create" && context.MessageName != "Update")
throw new InvalidPluginExecutionException("No test allowed can not be null");
if(entity.Contains("ita_notestallowedmessage") && context.MessageName == "Update")
{
var value = entity.GetAttributeValue<string>("ita_notestallowedmessage");
if (String.IsNullOrEmpty(value))
throw new InvalidPluginExecutionException("value of no test allowed field should not be null");
}
}
答案 2 :(得分:0)
我会这样做:
Entity contact = new Entity("contact");
if (contact.Contains("telephone2") && !string.IsNullOrEmpty(contact.GetAttributeValue<string>("telephone2"))
{
// telephone 2 is not null
}
编辑:更多信息来证明这个简短的答案
我发现null
和empty
想象一下这种情况:
现在,当您使用GetAttributeValue
读取输入参数时,您将不知道Last Name属性是否为null,或者它是否为空字符串。因此需要检查entity.attributes
是否包含姓氏
Entity contact = pluginContext.InputParameters["Target"] as Entity;
var lastName = contact.getAttribute<string>("lastname");
// -> lastName is an empty string
var lastNameInInputParameters = contact.Contains("lastname");
// -> lastNameInInputParameters is false
如果InputParameters中的属性为null,则这并不意味着该属性具有空值,仅表示用户未在此更新中更改此字段