在Bootstrap Popover中渲染PartialView

时间:2017-10-16 08:24:48

标签: c# asp.net-mvc twitter-bootstrap razor

我将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> 

结果非常令人印象深刻,但我不确定这是否是正确的方法,我不想要一个模拟弹出窗口,我也想在点击时在每个项目的顶部渲染这个局部视图

结果如下

enter image description here

但是有更好的方法可以解决这个问题吗?

此外,我必须将ITEM ID传递给部分视图,因此,我打算使用@{Html.RenderAction("ViewReminder", "Home", new { ID = 1 }); }代替@Html.Partial("_Reminder").ToHtmlString()

请告知

1 个答案:

答案 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()”。