【问题标题】:Rendering PartialView in Bootstrap Popover在 Bootstrap Popover 中渲染 PartialView
【发布时间】:2017-10-16 08:24:47
【问题描述】:

我正在将一个 Partialview 作为 HTML 字符串渲染到一个弹出窗口中,我想从你们那里得到一个建议,以确保我的方法是否正确

我有以下简单的代码

<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()

请指教

【问题讨论】:

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


    【解决方案1】:

    查看答案:Convert IHtmlContent/TagBuilder to string in C#

    我实现了 Helper:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多