SharePoint 文件夹名称验证器

SharePoint folder name validator

我使用 Xamarin 表单并制定一种机制,通过自由文本输入在 SharePoint 中创建一个文件夹。

这显然需要一个验证机制,因为有关于 Sharepoint 文件夹命名的规则

https://sharepointstuff.com/2018/12/03/file-naming-restrictions-in-sharepoint/

因为我希望它是一件有点常见的事情,所以我希望有人已经制作了这样的机制。

是否有 Sharepoint 文件夹名称验证机制?

给你朋友。

    private void Entry_TextChanged(object sender, TextChangedEventArgs e)
    {
        SharepointFolderNameValidator((Entry)sender, ValidationLabel, "Object");
    }

    /// <summary>
    /// Based on Sharepoint folder naming restrictions https://sharepointstuff.com/2018/12/03/file-naming-restrictions-in-sharepoint/
    /// </summary>
    private void SharepointFolderNameValidator(Entry entryField, Label validationLabel, string fieldName) 
    {
        validationLabel.Text = string.Empty;
        var invalidCharacterArray = new[] { '~', '#', '%', '&', '*', '{', '}', '\', ':', '<', '>', '?', '/', '+', '|' };
        var invalidNameArray = new[] { "-filer", "_files", "-Dateien", "_fichiers", "_bestanden", "_file", "_archivos",
            "_tiedostot", "_pliki", "_soubory", "_elemei", "_ficheiros", "_arquivos", "_dosyalar", "_datoteke",
            "_fitxers", "_failid", "_fails", "_bylos", "_fajlovi" };
        if (entryField.Text.Length > 128)
        {
            validationLabel.Text = $"{fieldName} name should be under 128 characters";
        }
        else if (entryField.Text.IndexOfAny(invalidCharacterArray) != -1)
        {
            var invalidCharacterindex = entryField.Text.IndexOfAny(invalidCharacterArray);
            validationLabel.Text = $"{entryField.Text[invalidCharacterindex]} is not a valid character";
        }
        else if (entryField.Text.StartsWith("."))
        {
            validationLabel.Text = $"{fieldName} cannot start with .";
        }
        else if (entryField.Text.EndsWith("."))
        {
            validationLabel.Text = $"{fieldName} cannot end with .";
        }
        else if (entryField.Text.Contains(".."))
        {
            validationLabel.Text = $"{fieldName} cannot have two dots";
        }
        else if (invalidNameArray.Any(entryField.Text.Contains))
        {
            var invalidName = invalidNameArray.First(entryField.Text.Contains);
            validationLabel.Text = $"{invalidName} is not allowed in {fieldName} name";
        }

        validationLabel.IsVisible = string.IsNullOrEmpty(validationLabel.Text) == false;
    }