Can get parameters without template

clear urlParameters dictionary if template fails. Removed UrlParametersTemplate property and UrlParamerters auto dictionary
This commit is contained in:
Michael Atwood
2020-07-01 15:15:39 -07:00
parent 038894cf64
commit d4be058d07

View File

@ -44,26 +44,6 @@ namespace Oqtane.Modules
public virtual List<Resource> Resources { get; set; } public virtual List<Resource> Resources { get; set; }
public virtual string UrlParametersTemplate { get; set; } = "";
public virtual Dictionary<string, string> UrlParamerters
{
get
{
var urlparameters = new Dictionary<string, string>();
var templates = UrlParametersTemplate.Split(',', StringSplitOptions.RemoveEmptyEntries);
foreach (var template in templates)
{
urlparameters = GetUrlParameters(template);
if (urlparameters.Count > 0) goto Return;
}
Return:
return urlparameters;
}
}
// base lifecycle method for handling JSInterop script registration // base lifecycle method for handling JSInterop script registration
protected override async Task OnAfterRenderAsync(bool firstRender) protected override async Task OnAfterRenderAsync(bool firstRender)
@ -136,37 +116,51 @@ namespace Oqtane.Modules
return Utilities.ContentUrl(PageState.Alias, fileid); return Utilities.ContentUrl(PageState.Alias, fileid);
} }
public virtual Dictionary<string, string> GetUrlParameters(string parameterTemplate) public virtual Dictionary<string, string> GetUrlParameters(string parametersTemplate = "")
{ {
var urlParameters = new Dictionary<string, string>(); var urlParameters = new Dictionary<string, string>();
string[] templateSegments;
var templateSegments = parameterTemplate.Split('/', StringSplitOptions.RemoveEmptyEntries);
var parameters = PageState.UrlParameters.Split('/', StringSplitOptions.RemoveEmptyEntries); var parameters = PageState.UrlParameters.Split('/', StringSplitOptions.RemoveEmptyEntries);
var actionId = 1; var parameterId = 0;
if (parameters.Length == templateSegments.Length)
if (string.IsNullOrEmpty(parametersTemplate))
{ {
for (int i = 0; i < parameters.Length; i++) for (int i = 0; i < parameters.Length; i++)
{ {
if (parameters.Length > i) urlParameters.TryAdd("parameter" + i, parameters[i]);
}
}
else
{
templateSegments = parametersTemplate.Split('/', StringSplitOptions.RemoveEmptyEntries);
if (parameters.Length == templateSegments.Length)
{
for (int i = 0; i < parameters.Length; i++)
{ {
if (templateSegments[i] == parameters[i]) if (parameters.Length > i)
{ {
urlParameters.TryAdd("parameter" + actionId, parameters[i]); if (templateSegments[i] == parameters[i])
actionId += 1; {
} urlParameters.TryAdd("parameter" + parameterId, parameters[i]);
else if (templateSegments[i].StartsWith("{") && templateSegments[i].EndsWith("}")) parameterId++;
{ }
var key = templateSegments[i].Replace("{", ""); else if (templateSegments[i].StartsWith("{") && templateSegments[i].EndsWith("}"))
key = key.Replace("}", ""); {
urlParameters.TryAdd(key, parameters[i]); var key = templateSegments[i].Replace("{", "");
} key = key.Replace("}", "");
else urlParameters.TryAdd(key, parameters[i]);
{ }
i = parameters.Length; else
{
i = parameters.Length;
urlParameters.Clear();
}
} }
} }
} }
} }
return urlParameters; return urlParameters;
} }