我将Partialview作为HTML字符串呈现为一个popover,我想得到你们的建议,以确保我的方法是否正确
我有以下简单代码
<button class="btn-link" data-toggle="popover" data-trigger="focus" data-html="true" data-placement="bottom" data-content="@Html.Partial("_Reminder").ToHtmlString()"><span class="badge badge-danger"><i class="fa fa-shield"></i> Unsecured</span></button>
我正在呈现的局部视图如下
Reminder me :
<button class="btn btn-link glyphicon glyphicon-time" title="Tomorrow"></button>
<button class="btn btn-link glyphicon glyphicon-calendar" title="In 1 Week"></button>
<button class="btn btn-link glyphicon glyphicon-check" title="In 1 Month"></button>
结果非常令人印象深刻,但我不确定这是否是正确的方法,我不想要一个模拟弹出窗口,我也想在点击时在每个项目的顶部渲染这个局部视图
结果如下
但是有更好的方法可以解决这个问题吗?
此外,我必须将ITEM ID传递给部分视图,因此,我打算使用@{Html.RenderAction("ViewReminder", "Home", new { ID = 1 }); }
代替@Html.Partial("_Reminder").ToHtmlString()
请告知
答案 0 :(得分:1)
请参阅答案:Convert IHtmlContent/TagBuilder to string in C#
我实施了帮手:
public static class HtmlContentExtension
{
public static string GetString(this IHtmlContent content)
{
var writer = new System.IO.StringWriter();
content.WriteTo(writer, HtmlEncoder.Default);
return writer.ToString();
}
}
我在View中使用它:
string meta = Html.Partial("Meta", Model.Meta).GetString();
<span class="pop" title="Meta" data-html="true" data-content="@meta">@Model.Points</span>
PS: 我使用“HtmlEncoder.Default”,因为我使用的是Core,如果我使用ASP MVC默认,请使用“new HtmlEncoder()”。