Мне нужно настроить свой код так, чтобы он урезал URL после числа.
например, я хочу, чтобы все после удаления List = 36. буквы и специальные символы являются единственными потенциальными символами, которые могут следовать за номером списка. так что я просто хочу обрезать URL, когда он читает букву или специальный символ после номера списка. Благодарю.
примеры текущих URL, которые регистрируются при отправке
https://portal.test/sites/test/testabc/Lists/TEST/DispFormSort.aspx?List=36caab7e%2D2234%2D4981%2D8225%%2Easpx
https://portal.test/sites/test/testabc/Lists/TEST/DispFormSort.aspx?List=36,http://portal.test/testabc/Lists/TEST/AllItems.aspx
URL, который я хочу получить при отправке:
https://portal.test.com/sites/test/testabc/Lists/RFC/DispFormSort.aspx?List=36
мой текущий код для метода, который захватывает URL:
public static string GenerateShortUrl(SPList list, int itemId)
{
try
{
var item = list.GetItemById(itemId);
var itemUrl = string.Empty;
if (item.File == null)
itemUrl = SPContext.Current.Web.Url + "/" + list.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url + "?ID=" + item.ID;
else
itemUrl = SPContext.Current.Web.Url + "/" + item.Url;
var generatedShortedUrl = GetShortUrl(itemUrl);
return generatedShortedUrl;
}
catch (Exception ex)
{
Utilities.WriteError(ex.ToString());
throw new SPException("An error occurred while attempting to shorten a URL.", ex);
}
}
private static string GetShortUrl(string itemUrl)
{
var shortId = Utilities.GenerateHash(itemUrl);
var shortenerUrl = string.Empty;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
var farm = SPAdministrationWebApplication.Local;
using (var site = farm.Sites[0])
{
using (var web = site.RootWeb)
{
if (!web.Properties.ContainsKey("LiebrandUrlShortener"))
throw new SPException(SPUtility.GetLocalizedString("$Resources:liebrandurlshortener,CannotFindUrl", "liebrandurlshortener", web.Language));
var urlList = web.Lists[SPUtility.GetLocalizedString("$Resources:liebrandurlshortener,StorageName", "liebrandurlshortener", web.Language)];
var query = new SPQuery();
query.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>" + shortId + "</Value></Eq></Where>";
var items = urlList.GetItems(query);
if (items.Count == 0)
{
var urlListItem = urlList.Items.Add();
urlListItem["Title"] = shortId;
urlListItem["RedirectTo"] = itemUrl;
web.AllowUnsafeUpdates = true;
urlListItem.Update();
web.AllowUnsafeUpdates = false;
}
shortenerUrl = web.Properties["LiebrandUrlShortener"];
}
}
});
return shortenerUrl + "/" + shortId;
}
public static string GenerateShortUrl(string longUrl)
{
return GetShortUrl(longUrl);
}
}
}