确保JSON在从不涉及javascript的简单视图模型对象上漂亮打印(ASP.NET MVC 4)
我的思想有点脱节。我已经看到了如何使用确保JSON在从不涉及javascript的简单视图模型对象上漂亮打印(ASP.NET MVC 4),javascript,jquery,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc 4,我的思想有点脱节。我已经看到了如何使用JSON.stringify(obj)进行JSON漂亮打印-但我有一种情况需要这样做,但json从来没有真正接触过javascript。它只是MVC视图模型上的一个字符串。这是一个“错误”视图,就像这样 (我正在使用jQuery,如果它打开了任何其他选项) 模型 有点像这样。如果操作失败,它将生成以下视图 控制器 看法 @模型故障视图模型 @{ ViewBag.Title=“数据输入错误”; Layout=“~/Areas/Administrator/Vie
JSON.stringify(obj)进行JSON漂亮打印代码>-但我有一种情况需要这样做,但json从来没有真正接触过javascript。它只是MVC视图模型上的一个字符串。这是一个“错误”视图,就像这样
(我正在使用jQuery,如果它打开了任何其他选项)
模型
有点像这样。如果操作失败,它将生成以下视图
控制器
看法
@模型故障视图模型
@{
ViewBag.Title=“数据输入错误”;
Layout=“~/Areas/Administrator/Views/Shared/_Layout.cshtml”;
}
@模型消息
@Model.JSON
我基本上只想对@Model.JSON
进行“stringify”,这样它就可以很好地显示所有内容并格式化,但如果不真正让视图复杂化,我就很难做到这一点。有什么建议吗?来自@code>charlietfl给我的链接
我设计了以下内容来实现我的目标
视图模型
控制器
看法
@model SuccessViewModel
@{
ViewBag.Title=“成功输入数据”;
Layout=“~/Areas/Administrator/Views/Shared/_Layout.cshtml”;
}
@模型消息
$(文档).ready(函数(){
var str=JSON.stringify(@(新的MvcHtmlString(Model.JSON)),未定义,2);//缩进级别=2
$('#json result').html(str);
console.log(str);
});
扩展方法
//
///允许将任何对象快速序列化为Json。
///
公共静态类JsonExtensions{
///
///将对象序列化为Javascript对象表示法。
///
///要序列化的项。
///
///该项序列化为Json。
///
公共静态字符串ToJson(此对象项){
返回Newtonsoft.Json.JsonConvert.SerializeObject(项);
}
}
你所说的“扭曲视图”是什么意思?试试这个:嘿,@charlieftl-我不知道该怎么办。我的解决方案与您链接的解决方案(略有不同),但您链接的解决方案提供了所有信息。不过,我还是要感谢你。
public class FailureViewModel{
public string Name { get; set; }
public string Message { get; set; }
public string JSON { get; set; }
}
return View("Failure", new FailureViewModel{
Name = "Some Error Name",
Message = "There was an error and the changes were not submitted. Please submit this to the administrator",
JSON = model.ToJson()
});
@model FailureViewModel
@{
ViewBag.Title = "Error With Data Entry";
Layout = "~/Areas/Administrator/Views/Shared/_Layout.cshtml";
}
<article>
<aside class="red">
@Model.Message
</aside>
<aside>
<pre>
@Model.JSON
</pre>
</aside>
</article>
public class SuccessViewModel {
public string Name { get; set; }
public string Message { get; set; }
public string JSON { get; set; }
}
return View("Success", new SuccessViewModel {
Name = "The Title",
Message = "The message",
JSON = model.ToJson()
});
@model SuccessViewModel
@{
ViewBag.Title = "Successful Data Entry";
Layout = "~/Areas/Administrator/Views/Shared/_Layout.cshtml";
}
<article>
<aside class="green">
@Model.Message
</aside>
<aside>
<pre id="json-result">
</pre>
</aside>
</article>
<script type="text/javascript">
$(document).ready(function(){
var str = JSON.stringify(@(new MvcHtmlString(Model.JSON)), undefined, 2); // indentation level = 2
$('#json-result').html(str);
console.log(str);
});
</script>
/// <summary>
/// Allows for any object to be serialized into Json very quickly.
/// </summary>
public static class JsonExtensions {
/// <summary>
/// Serializes an object to Javascript Object Notation.
/// </summary>
/// <param name="item">The item to serialize.</param>
/// <returns>
/// The item serialized as Json.
/// </returns>
public static string ToJson(this object item) {
return Newtonsoft.Json.JsonConvert.SerializeObject(item);
}
}