Click here to Skip to main content
15,890,123 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am using a tag helper to pull in content on my page from my DB so for example for my navigation tag helper is

C#
[HtmlTargetElement("navigationmenu", TagStructure = TagStructure.WithoutEndTag)]
    public class NavigationMenuTagHelper : TagHelper
    {
        private readonly IConfiguration _configuration;
        public NavigationMenuTagHelper(IConfiguration configuration)
        {
            _configuration = configuration;
        }
        
        public string MenuName { get; set; }
        
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            /* Suppress the tag then select navigation menu from db */
            output.SuppressOutput();
            
            /* Connect to layout DB */
            SqliteConnection layconn = new SqliteConnection(_configuration.GetConnectionString("LayConn"));
            layconn.Open();
            SqliteDataReader r = layconn.RunReader("SELECT HTML FROM MenuHTMLView WHERE MenuName = @x0", MenuName);
            while (r.Read()) output.PostElement.AppendHtml(r.GetString(0));
            r.Close();
            layconn.Close();
        }
    }


Output
HTML
<div class="collapse navbar-collapse" id="navbarCollapse">
          <ul class="navbar-nav mr-auto">
            <li class="nav-item"><a class="nav-link" asp-page="/Index">Home</a></li>
           </ul>
        </div>


Expected output
HTML
<div class="collapse navbar-collapse" id="navbarCollapse">
          <ul class="navbar-nav mr-auto">
            <li class="nav-item"><a class="nav-link" href="/Index">Home</a></li>
           </ul>
        </div>


The problem is that things like asp-page are spat out on the page instead of being processed into hyperlinks. I need my tag helper to be able to parse the tag helpers pulled from my db properly as I intend to pull other tag helpers out of the DB for content sections too.

Thanks, Ashley

What I have tried:

output.PostElement.AppendHtml(r.GetString(0));
output.PostElement.Append(r.GetString(0));
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900