问题描述
我使用 Xamarin 表单并制定了一种机制,通过自由文本条目在 SharePoint 中创建文件夹。
这显然需要一个验证机制,因为有关于 Sharepoint 文件夹命名的规则
https://sharepointstuff.com/2018/12/03/file-naming-restrictions-in-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;
}