Gibt es eine Möglichkeit, einen eindeutigen internen Namen in einer SPFieldCollection ohne Try Catch zu finden?
-
28-09-2020 - |
Frage
Methode SPFieldCollection.GetFieldByInternalName
gibt einen Fehler aus, wenn das Feld mit dem angegebenen internen Namen nicht gefunden werden kann.
Gibt es eine Möglichkeit festzustellen, ob ein Feld mit einem internen Namen vorhanden ist, ohne einen Fehler auszulösen?
Ich habe das erstellt, aber ich mag es nicht, Fehler für jedes Feld zu werfen, mit dem ich mich befasse.
public string UniqueInternalName(string initialInternalName, SPFieldCollection fieldCollection)
{
string uniqueInternalName = initialInternalName;
int? internalNameCount = null;
try
{
if (fieldCollection.GetFieldByInternalName(initialInternalName) != null)
internalNameCount = 0;
while (fieldCollection.GetFieldByInternalName(uniqueInternalName) != null)
uniqueInternalName = initialInternalName + internalNameCount++;
}
catch { }
return uniqueInternalName;
}
Lösung 2
Anscheinend gibt es keine andere Möglichkeit festzustellen, ob ein Feld mit einem internen Namen existiert, ohne einen Fehler auszulösen.
Andere Tipps
Verwenden Sie die TryGetFieldByStaticName-Methode für die SPFieldCollection: http://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.spfieldcollection.trygetfieldbystaticname(v=office.15).aspx.
Gibt null zurück, wenn nichts gefunden wird.