Quantcast
Channel: ASP.NET Core
Viewing all articles
Browse latest Browse all 9386

Replacing current tag with custom content using a Custom Tag Helper

$
0
0

I'm looking into creating a *custom tag helper* that replaces the original tag with content from an *external file*, but I can't seem to figure out how to do it when using *ProcessAsync*.

The html:
<body>
<lc:default name="CSS" />
</body>

DefaultResourceTagHelper.cs:
namespace LC.Tools.Utility.TagHelpers
{
[HtmlTargetElement("lc:default", Attributes = "name", TagStructure = TagStructure.WithoutEndTag)]
public class DefaultResourceTagHelper : TagHelperBase
{
public DefaultResourceTagHelper(IHostingEnvironment env) : base(env) { }

public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
try
{
WebRequest wr = WebRequest.Create(GetUrl());
var hwr = await wr.GetResponseAsync();

if (hwr.ContentLength > 0)
{
using(Stream s = hwr.GetResponseStream())
{
using (StreamReader sr = new StreamReader(s))
{
string temp = await sr.ReadToEndAsync();

context.Items.Clear();
context.Items.Add("test", temp);
}
}
}
}
catch (Exception ex) { }
}

private string GetUrl() {
string result = "http://lctools.lundbeckconsulting.no/Resource/" + this.Version + "/Default";

switch(this.Name)
{
case ResourceNames.CSS:
result += "CSS.txt";
break;

case ResourceNames.Script:
result += "SCRIPT.txt";
break;
}

return result;
}

[HtmlAttributeName("name")]
public ResourceNames Name { get; set; }

[HtmlAttributeName("version")]
public string Version { get; set; } = "Latest";
}

public enum ResourceNames
{
Script,
CSS
}
}

The file content of the external file:
<link rel="icon" type="image/png" href="/IMAGES/fav-icon.png" />
<link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

I'm looking to replace the <lc:default name="CSS" /> tag with the file content, with the end result like this:

<body>
<link rel="icon" type="image/png" href="/IMAGES/fav-icon.png" />
<link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</body>


Viewing all articles
Browse latest Browse all 9386

Trending Articles