当前位置: 首页 > 面试题库 >

在ASP.NET MVC中的JSON属性中返回呈现的HTML部分

葛海阳
2023-03-14
问题内容

我一直很高兴从ASP.NET中的控制器返回JsonResult对象或部分ASP.NET视图。

我想将呈现的部分视图作为JSON对象的属性返回。例如

要求

/post/detail/1

会回来

{"PostId": 1, "Html": "<p>some markup rendered from a partial to inject</p>" }

当我使用JavaScript处理响应时,这将使我知道PostId。有关最佳方法的任何提示?


问题答案:

这是一些将起作用的代码,因为我今天需要这样做。原始代码在这里描述。

public static string RenderPartialToString(string controlName, object viewData)
{
    var viewContext = new ViewContext();
    var urlHelper = new UrlHelper(viewContext.RequestContext);
    var viewDataDictionary = new ViewDataDictionary(viewData);

    var viewPage = new ViewPage
    {
        ViewData = viewDataDictionary,
        ViewContext = viewContext,
        Url = urlHelper
    };

    var control = viewPage.LoadControl(controlName);
    viewPage.Controls.Add(control);

    var sb = new StringBuilder();
    using (var sw = new StringWriter(sb))
    using (var tw = new HtmlTextWriter(sw))
    {
            viewPage.RenderControl(tw);
    }

    return sb.ToString();
}

然后,您可以使用它来执行RJS样式的json结果

public virtual ActionResult Index()
{
    var jsonResult = new JsonResult
    {
        Data = new
        {
            main_content = RenderPartialToString("~/Views/contact/MyPartial.ascx", new SomeObject()),
            secondary_content = RenderPartialToString("~/Views/contact/MyPartial.ascx", new SomeObject()),
        }
    };

    return Json(jsonResult, JsonRequestBehavior.AllowGet);
}

并且局部具有强类型视图模型

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SomeObject>" %>
<h1>My Partial</h1>


 类似资料:
  • 问题内容: 如何使用AJAX加载以html呈现的完整局部视图(所以我只设置了div.html) 我需要ajax调用来调用控制器操作,该操作将呈现完整的局部视图(红色)并将其附加到当前加载的视图的末尾吗? [我知道如何附加到DOM以及如何进行AJAX调用] 我需要知道什么是最好的 管道 方法,该 动作应该返回哪种类型的ActionResult, 以及 是否已经有内置的机制 以避免重新发明轮子? 问题

  • 问题内容: JavaScript代码window.print()可以打印当前的HTML页面。 如果我在HTML页面中有一个div(例如,从ASP.NETMVC视图呈现的页面),那么我只想打印div。 是否有jQuery兼容的JavaScript或普通的JavaScript代码来实现此请求? 更清楚地说,假设呈现的HTML页面是这样的: 然后我要单击“打印”按钮,仅打印div3。 问题答案: 我会这

  • 问题内容: 如何在控制器的JsonResult中渲染要使用的局部视图? 问题答案: 是一种自定义扩展方法,将视图呈现为。 文章中没有提到它(您最初提到的是什么),但是您可以在文章附带的示例代码中找到它。可以在\ Helpers \ Reders.cs下找到它 这是有问题的方法的代码:

  • 我正试图从SQL Server导出一些数据作为HTML文件,但Internet explore将这些文件呈现得非常好,尽管chrome显示特殊字符。

  • 我正面临一个使用Vue呈现字符串的问题。当前,如果HTML标记在不同的行上打开和关闭,例如。 它的呈现方式如下 这导致返回包含冗余空白的字符串。例如。 我发现如果你打开和关闭HTML标签包含一个字符串在同一行,问题就没有了。例如。 问题:我是否可以强制Vue在不设置所有实际HTML格式的情况下呈现没有额外空格的文本,这意味着在不同的行上打开和关闭标签?(我并不是一个人在做这个项目)或者,我能以某种

  • app.py 和我的HTLM代码 现在的问题是打印是带有HTML标记的。我该怎么解决呢?