返回一个偏文

我的MVC应用程序的一部分包括维基。 除了标准格式的维基有渲染数据转换成模板了一些特殊的标签。 当解析这些标签从资源库中获取数据,实例化一个视图模型,并将其呈现给部分,这部分然后获取插入标记取代了原来的标签。 在最终确定标记本身呈现为在与相关UIHint任何性质的DisplayFor的一部分。

代码的相关部分是:

private static void MatchSpecial(WikiHelper wh) { wh.match = SpecialTagRegex.Match(wh.sb.ToString()); while (wh.match.Success) { wh.sb.Remove(wh.match.Index, wh.match.Length); string[] args = wh.match.Groups[2].Value.Split('|'); switch (wh.match.Groups[1].Value.ToUpperInvariant()) { case "IMAGE": string imageid; imageid = args[0]; Image i = baserepo.imagerepo.GetImage(imageid); ViewModels.ImageViewModel ivm = new ViewModels.ImageViewModel(i, args); wh.sb.Insert(wh.match.Index, wh.Html.Partial("ImageViewModel",ivm)); break; } wh.match = SpecialTagRegex.Match(wh.sb.ToString(), ws.end); } }

有关成员WikiHelper是:

wh.sb - StringBuilder containing the markup wh.html - the HtmlHelper from the main view wh.match - holds the current regex matches

在此MVC2工作的罚款。 我现在在升级到MVC3和剃刀视图引擎的过程。 尽管Html.Partial应该返回部分则不是返回一个空字符串,并直接写内容到响应,其具有出现在HTML文件的顶部所有相似模板元素的结果的MvcHtmlString (即使在我的布局文件中任何东西之前)。

--------------解决方案-------------

鉴于你所描述症状,我怀疑你是直接在定制的助手写入响应流的地方。 因此,无论你是要允许输出的响应,确保您更换:

htmlHelper.ViewContext.HttpContext.Response.Write("some string");

搭配:

htmlHelper.ViewContext.Writer.Write("some string");

直接写入数据流中的WebForms工作的响应视图引擎,因为它是从传统的WebForms在哪里,这是事情应该如何工作的遗产。 在ASP.NET MVC虽然这是不正确。 它的工作,但不正确。 所有的助手应该写ViewContext.Writer代替。 剃刀写的东西变成临时缓冲区然后将其刷新到响应。 它采用了由内而外呈现。

分类:asp.net的MVC 时间:2015-03-15 人气:2
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.705 (s). 10 q(s)