我正在从控制器创建HTML菜单。菜单存储在数据库中,我制作html标签,如下所示:
foreach (UIMenuModel item in list)
{
if (item.Controller != "Home")
{
string line = string.Format(@"<li><a asp-area=""{0}"" asp-controller=""{1}"" id=""{1}""
asp-action = ""{2}"" style = ""font-size:16px;;"" > {3} </a></li>", item.Area, item.Controller, item.Action, item.LinkText);
sb.Append(line);
}
}
这使我在HTML之下:
<li><a asp-area="" asp-controller="CrossApproval" id="CrossApproval" asp-action="Index" style="font-size:16px;;"> Cross Approval </a></li>
用HTML本身编写的其他菜单项在浏览器中显示以下HTML。
<li><a id="CrossRequest" style="font-size:16px" href="/CrossRequest">Cross Request</a></li>
在用户界面上,它看起来很完美。但是,我无法单击并导航到所需的控制器和操作方法。在此定位标记不允许我导航的同时,有人可以帮我识别一下。
答案 0 :(得分:0)
使用RazorLightEngine将纯字符串转换为呈现的Razor字符串:
string content = "Hello @Model.Name. Welcome to @Model.Title repository";
var model = new
{
Name = "John Doe",
Title = "RazorLight"
};
var engine = new RazorLightEngine();
string result = engine.ParseString(content, model);
然后将其添加到剃刀视图中的任何位置,例如编码字符串
<div>
@Html.Raw(result)
</div>
答案 1 :(得分:0)
正如Question中所发布的那样,带有href的HTML正常工作。因此,我决定模仿控制器的相同行为,并如下更改代码:
string line = string.Format(@"<li><a asp-area=""{0}"" id=""{1}"" href=""/{1}/{2}""
style=""font-size:16px"">{3}</a></li>", item.Area, item.Controller, item.Action, item.LinkText);
这生成了一个链接,我可以单击并浏览。