- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是在寻找一种很好的方法,如何从服务器返回 JSON 对象,该对象包含部分 View 的 html 和一些额外的数据(如果需要)。
我正在使用 approach by Tim Scott将局部 View 呈现为字符串(进行一些修改 - 使其成为 View 引擎集合感知,使其了解 View 和局部 View 之间的区别,将其放入 StringResult 类并使用 Controller 扩展方法包裹)。
以下是导致问题的原因:
public static string RenderViewToString(ControllerContext controllerContext,
IView view, ViewDataDictionary viewData, TempDataDictionary tempData)
{
Stream filter = null;
ViewPage viewPage =
new ViewPage
{
ViewContext = new ViewContext
(controllerContext, view, viewData, tempData)
};
//Right, create our view
//Get the response context, flush it and get the response filter.
var response = viewPage.ViewContext.HttpContext.Response;
response.Flush();
var oldFilter = response.Filter;
try {
//Put a new filter into the response
filter = new MemoryStream();
response.Filter = filter;
//Now render the view into the memorystream and flush the response
viewPage.ViewContext.View.Render(viewPage.ViewContext, viewPage.ViewContext.HttpContext.Response.Output);
response.Flush();
//Now read the rendered view.
filter.Position = 0;
var reader = new StreamReader(filter, response.ContentEncoding);
return reader.ReadToEnd();
}
finally {
//Clean up.
if (filter != null) {
filter.Dispose();
}
//Now replace the response filter
response.Filter = oldFilter;
}
}
var v = this.ViewResultToString(PartialView("_Foo", foo));
return Json(new {Html = Server.HtmlEncode(v), Bar = foo.Bar});
Server cannot set content type after HTTP headers have been sent.
[HttpException (0x80004005): Server cannot set content type after HTTP headers have been sent.] System.Web.HttpResponse.set_ContentType(String value) +8760264 System.Web.HttpResponseWrapper.set_ContentType(String value) +11 System.Web.Mvc.JsonResult.ExecuteResult(ControllerContext context) +131 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +10 System.Web.Mvc.<>c__DisplayClass11.b__e() +20 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func
1 continuation) +255
1 filters, ActionResult actionResult) +179 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +395 System.Web.Mvc.Controller.ExecuteCore() +123 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +23 Company.UI.Project.Controllers.Base.BaseController.Execute(RequestContext requestContext) in c:\Project\Controllers\Base\BaseController.cs:109 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7 System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +144 System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +54 System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
System.Web.Mvc.<>c__DisplayClass13.<InvokeActionResultWithFilters>b__10() +20
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList
最佳答案
使用 this 让它工作起来.
这就是问题所在:
In the first case, intercepting the output to HttpResponse using a "capturing filter" forces you to flush the output before the whole view is rendered and, since the original HttpResponse object is used, doesn't allow you to change content encoding, mime type or add headers after the partial view has been rendered.
关于asp.net-mvc - PartialView 作为字符串 + JsonResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748428/
有一个 ParentPage,它在右 Pane 中显示 PartialViewA。在 PartialViewA 中有一个下拉菜单。在选择特定值时,我想用 PartialViewB 替换 Partial
我的主页包含许多 PartialViews 这是我的 Index.cshtml @{ foreach (var summary in Model.Summaries)
我的代码在 VS2010 C# 中完美运行,但一旦发布到 IIS7,PartialView(记录列表)不会在 View 中呈现...它滚动到一个没有数据的新页面,除了从 SQL 检索的正确记录计数服务
我目前正在使用 ASP.NET MVC3 RC,并且正在使用不引人注目的 JQuery 验证,如 Brad Wilson 在 his blog 上所述。 。它工作得很好,但是当我将表单(在 Ajax
我正在开发 2 个 MVC5 网站。它们单独运行,但实际上彼此相关(1 个管理站点和 1 个用户站点)。在这两个站点中,我都必须使用 HTML 表格呈现图形板。我正在使用带有模型的 PartialVi
我正在使用 MVC4、C# 和 Razor 来制作一个简单的 Web 应用程序。 在我的 Controller 中,我有一个方法返回向用户显示的部分 View ,在本例中是模式弹出窗口: public
您好,我是 MVC 4 的新手。我遇到了partialView 的问题。我搜索了很多并研究了不同的教程,但找不到任何可以解决我的问题的解决方案。我创建了一个 PagedList 来显示记录在 Inde
我想获取标签的祖先标签。位于查看,删除位于部分 View 。 我可以通过 AJAX 将部分 View 加载到 View 中。但是,我无法采用部分 View 的祖先来操作部分 View ,在我的例子中,
我有部分 View ,我在 View 中使用 在这个partialView中我有切换开关 这是该开关的 css 文件 .switch { position: relative; dis
我将 MVC3 与 Jquery 的 .load() 和 PartialView() 结合使用。 通过我的 jquery,我正在执行以下操作: $("#stlist").load('@Ur
我在 ASP.NET MVC 页面上有一个 div,我想使用 jQuery 动态填充该 div(根据用户请求)。我目前使用 jQuery 对我的 Controller 进行 JSON 调用,该调用返回
我的PartialView是在View中渲染的,那么这个PartialView需要post controller,然后catch response,然后show。怎么做到的? 查看
我有一个索引页: @model AlfoncinaMVC.Models.VentaIndexViewModel @{ ViewBag.Title = "Ventas"; Layout
我有 MVC 应用程序,它用于从主视图 (ProductMaster) 将 ProductAreaGrid 列表显示为 PartialView,并且它将在局部 View 中将 CreateProduc
假设我像这样将数据传递给分部 View @Html.Partial("_LandingPage_CaseStudiesList", new { TrackAction = "Case Study Cl
我在 View 中使用 ajax 调用在 PartialView 中加载数据,而不会阻塞 UI。 $(function() { $.get( '@Url.Action("MyFunction
我有一个 Left 部分,其中包含我的特定页面的导航内容。 现在我想在其中显示一个 TreeView,因此我创建了一个局部 View 以将特定模型传递给该 View 。现在,我正尝试将该特定 View
我有一个显示“房间”对象的 HTML 表格的 View 。每个 Room 都是表中的一行(这是一个 PartialView)。 View 包含这段代码: @foreach (var item
我尝试设置一个小型演示,其中一篇文章有多个评论。文章详细信息 View ,应在部分 View 中呈现评论。 partialView 本身包含另一个用于添加新评论的局部 View 。 当我尝试添加另
我有一个 PartialView,其中包含带有 Razor 注释的 HTML 代码。它为我生成一个页面,我想通过电子邮件将其发送给任何人。有没有办法把这个PartialView翻译成HTML内容发送出
我是一名优秀的程序员,十分优秀!