Check CRM form field value Empty or Not

时间:2016-12-02 05:07:55

标签: c# dynamics-crm

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

3 个答案:

答案 0 :(得分:3)

从实体获取字段值的首选方法是使用GetAttributeValue<T>方法。

在Dynamics CRM中,系统永远不会返回nullstring.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
}

编辑:更多信息来证明这个简短的答案

我发现nullempty

之间存在差异

想象一下这种情况:

  • 您在联系人上有一个更新插件。
  • 此联系人具有名字(“John”)和姓氏(“Smith”)设置
  • 您更新名字

现在,当您使用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,则这并不意味着该属性具有空值,仅表示用户未在此更新中更改此字段