【发布时间】:2012-02-16 16:09:50
【问题描述】:
我已将这个问题作为对另一篇帖子的评论提出,但无法正常工作。我正在使用RenderRazorViewToString() method,但不知何故,返回的 JSON 获得了所有 Visual Studio 格式(制表符、空格、换行符等),这就是我所做的:
public virtual ActionResult RenderToString()
{
var html = RenderRazorViewToString(MVC.Markets.Views._RenderToString);
return Json(new { html = html }, JsonRequestBehavior.AllowGet);
}
这是返回的结果:
{"html": "<div class=\"frame company-quote contain\" data-module-name=\"FirstGlanceModule\">\r\n\t<div data-module-name=\"CompanyHeaderModule\">\r\n\t\t<h1>\r\n\t\t\tMicrosoft Corp <em>(MSFT:NASDAQ)</em></h1>\r\n\t</div>\r\n\t<div class=\"first-glance\" data-module-name=\"FirstGlanceQuoteModule\">\r\n\t\t<table>\r\n\t\t\t<thead>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\tPrice\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\tChange\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\tVolume\r\n\t\t\t\t\t</th>\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\tMarket Cap\r\n\t\t\t\t\t</th>\r\n\t\t\t\t</tr>\r\n\t\t\t</thead>\r\n\t\t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t$30.13\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<span class=\"neg\">-0.13</span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t32.75 M\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t$252.77 B\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n\t</div>\r\n\t<div class=\"controls\" data-module-name=\"FirstGlanceControlsModule\">\r\n\t\t<em>Data as of February 15, 2012 01:59:59 PM ET</em>\r\n\t\t<div>\r\n\t\t\t<button class=\"type-1\">\r\n\t\t\t\t<span>Add to Watchlist</span></button>\r\n\t\t\t<button class=\"type-2\">\r\n\t\t\t\t<span>Trade</span></button>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n"}
我尝试添加一个扩展方法 outlined here 以使用 Formatting.None 将其重新格式化为 xml 并获得了稍微好一点的结果,但仍然有额外的标签以及我可能不想要的 xml 版本标签:
{"html": "<?xml version=\"1.0\" encoding=\"utf-16\"?><div class=\"frame company-quote contain\" data-module-name=\"FirstGlanceModule\"><div data-module-name=\"CompanyHeaderModule\"><h1>\r\n\t\t\tMicrosoft Corp <em>(MSFT:NASDAQ)</em></h1></div><div class=\"first-glance\" data-module-name=\"FirstGlanceQuoteModule\"><table><thead><tr><th>\r\n\t\t\t\t\t\tPrice\r\n\t\t\t\t\t</th><th>\r\n\t\t\t\t\t\tChange\r\n\t\t\t\t\t</th><th>\r\n\t\t\t\t\t\tVolume\r\n\t\t\t\t\t</th><th>\r\n\t\t\t\t\t\tMarket Cap\r\n\t\t\t\t\t</th></tr></thead><tbody><tr><td>\r\n\t\t\t\t\t\t$30.13\r\n\t\t\t\t\t</td><td><span class=\"neg\">-0.13</span></td><td>\r\n\t\t\t\t\t\t32.75 M\r\n\t\t\t\t\t</td><td>\r\n\t\t\t\t\t\t$252.77 B\r\n\t\t\t\t\t</td></tr></tbody></table></div><div class=\"controls\" data-module-name=\"FirstGlanceControlsModule\"><em>Data as of February 15, 2012 01:59:59 PM ET</em><div><button class=\"type-1\"><span>Add to Watchlist</span></button><button class=\"type-2\"><span>Trade</span></button></div></div></div>"}
知道如何进行这项工作吗?谢谢。
【问题讨论】:
-
你对结果做了什么让空格随之而来很重要?
-
其实不管什么原因,用string.Replace或者类似的方法去掉所有的制表符、换行符和回车应该是微不足道的。
-
数据带宽量等...另外,我不确定使用 string.Replace() 是否会在所有字符串操作都在后台进行时更慢。
-
是的,但这就是框架呈现视图的方式。除非您想编写自己的代码来执行此操作,否则您可能会被困在对结果进行字符串操作。
标签: c# asp.net-mvc asp.net-mvc-3 razor