Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to pass line of HTML as variable?

I’m trying to make a menu for my app, and I’m trying to avoid repeating the same HTML code, so I want to put some data into array and loop it. It works fine for text, but I’m having trouble passing Bootstrap icons which are written in <i> markups.

I’m working on an MVC .NET project in cshtml file.

Here is what I have:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

@{
   string[] menuItems= {"Clients"};
}

<a class="nav-link menu-item" asp-area="" asp-controller="Calendar" asp-action="Calendar">
   <i class="bi bi-people-fill clients"></i>
   <span class="menu-item-text">@menuItems[0]</span>
</a>

And I’m trying to achieve something like this:

@{
   string[,] menuItems= {"Clients", "<i class="bi bi-people-fill clients"></i>"};
}

<a class="nav-link menu-item" asp-area="" asp-controller="Calendar" asp-action="Calendar">
   @menuItems[0,1]
   <span class="menu-item-text">@menuItems[0,0]</span>
</a>

Is there a way to make HTML read the string as part of the code?

>Solution :

By default any text being emitted from the server is HTML-encoded. You can bypass this by using Html.Raw():

@Html.Raw(menuItems[0,1])

Note that this should be used with caution, because if you use this to output anything that’s provided by user input or in any way editable by users then you are exposing your users to security risks.

This could be a good opportunity for you to investigate other ways to achieve the same functionality without this potential risk. For example, you could already have the markup in the view and use the dynamic data to show/hide the markup. Or not even rely on server-side code at all and style/change menu items client-side.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading