如何将动态创建的 HTML 字符串渲染到 Asp.NET Core 中的 razor 视图中

问题描述 投票:0回答:1

我编写了如下的 html 帮助器方法

 public static class CustomHtmlHelper
{
    public static HtmlString SetMenuRespectiveWithRoles(this IHtmlHelper html, HttpContext context)
    {
        StringBuilder menu = new StringBuilder();
        string menuLink = string.Format("<a asp-area='{0}' asp-controller='{1}' asp-action='{2}'>{3}</a></li>", "AreaName", "ControllerName", "ActionName", "Menu Name");
        return new HtmlString(menu.ToString());
    }
}

并从布局中将其调用为 -

 @Html.SetMenuRespectiveWithRoles(Context)

它在浏览器上呈现为 -

<a asp-area="AreaName" asp-controller="ControllerName" asp-action="ActionName">MenuName</a>

我期待它会呈现为

<a href="AreaName/ControllerName/ActionName">MenuName</a>

我不想使用

TagHelpers
类创建 html 标签。

您能否指导我们如何在.net core razor页面中渲染动态创建的字符串?

asp.net-mvc asp.net-core asp.net-core-mvc
1个回答
0
投票

参考资料:https://learn.microsoft.com/en-us/dotnet/api/system.web.mvc.htmlhelper.raw?view=aspnet-mvc-5.2

这可以通过使用 @Html.Raw() 方法来完成。

控制器:

public class HomeController
{
    public ActionResult Index()
    {
        ViewData["menuLink"] =
            string.Format("<a asp-area='{0}' asp-controller='{1}' asp-action='{2}'>{3}</a></li>", "AreaName", "ControllerName", "ActionName", "Menu Name");

        return View();
    }
}

查看:

@Html.Raw(ViewData["menuLink"]);

您必须使用 ViewData、ViewBag、TempData 或 Model 将 HTML 标签从控制器传递到视图,并为 @Html.Raw() 方法赋值。

© www.soinside.com 2019 - 2024. All rights reserved.