我从服务器获取编码数据,使用.NET WebUtility.HtmlEncode编码。
然后显示此数据,需要将其发送回服务器以进行某些操作。在此期间,在使用JSON.stringify发送之前,它将转换为JSON。到目前为止一切正常。
然而,一旦到达服务器,它就会因为潜在的危险而被拒绝。转换为JSON的对象可以包含具有特殊字符的字符串,例如 -
“这是John&#39s帐户”最初“这是John的帐户”
或“约翰在&#165中获得”最初“约翰以¥收入”
我认为这些编码的字符串值会干扰正确形成的JSON。
Javascript中有什么方法可以JSONify HTML编码的字符串吗?
编辑:如果不清楚,当我执行JSON.stringify(数据)时,数据已经被编码。 我的数据的一个例子 -
row [0] = {column1,column2,column3} 每列都是HTML编码的字符串,例如“This is John&#39s account”
答案 0 :(得分:0)
考虑带有字符串的JSON对象看起来像这样
{ 'member1' : 'some string with ¥' }
我不相信这是JSON的错。您更有可能通过GET而不是POST将JSON对象传递给方法。
作为一个特例,如果您通过GET方法提交JSON并且未指定允许GET行为,Microsoft MVC3框架将抛出一个关于它不安全的错误。
可以在this answer.
中看到原因答案 1 :(得分:0)
我认为您可以通过三个步骤实现此功能:
但是通过JSON返回局部视图有点棘手,我的意思是你不能只通过JSON返回局部视图。首先,您需要转换字符串中的局部视图并返回此字符串。下面的方法将告诉你如何实现这个目标:
public string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
此方法将转换字符串中的局部视图,并通过JSON将其返回给服务器。您需要传递给它中的参数,首先是部分视图名称,第二个是模型。希望你能解决问题。
答案 2 :(得分:0)
最终的解决方案更像是一个黑客,我添加了一个注释 -
到后端的我的函数,以便它不会尝试验证我的JSON字符串。