Estoy tratando de hacer un menú para mi aplicación y estoy tratando de evitar repetir el mismo código HTML, así que quiero poner algunos datos en una matriz y hacer un bucle. Funciona bien para el texto, pero tengo problemas para pasar los íconos de Bootstrap que están escritos en marcas <i> .
Estoy trabajando en un proyecto MVC .NET en un archivo cshtml.
Esto es lo que tengo:
@{ 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>Y estoy tratando de lograr algo como esto:
@{ 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>¿Hay alguna manera de hacer que HTML lea la cadena como parte del código?
De forma predeterminada, cualquier texto que se emita desde el servidor está codificado en HTML. Puede omitir esto usando Html.Raw() :
@Html.Raw(menuItems[0,1])Tenga en cuenta que esto debe usarse con precaución , porque si lo usa para generar cualquier cosa proporcionada por la entrada del usuario o editable de alguna manera por los usuarios, entonces está exponiendo a sus usuarios a riesgos de seguridad .
Esta podría ser una buena oportunidad para investigar otras formas de lograr la misma funcionalidad sin este riesgo potencial. Por ejemplo, ya podría tener el marcado en la vista y usar los datos dinámicos para mostrar/ocultar el marcado. O ni siquiera confiar en el código del lado del servidor y diseñar/cambiar los elementos del menú del lado del cliente.