2021-07-16 07:24:11
之前写的太繁琐,这里总结一下:
- 新增
Newtonsoft.Json
依赖库(dll文件) - 编辑ASP页面,新增打印语句。
- 找一个可以执行JavaScript的地方(我找到了
document 的 ready 方法
) - 写 console.log(要打印的变量) 语句,至于要打印的变量,用 ASP 的表达式获取
<%: xxx %>
- demo
- 找一个可以执行JavaScript的地方(我找到了
$(document).ready(function(){
console.log("test 123"); // 先打印简单string确保会执行到本处的JS
console.log('<%: Newtonsoft.Json.JsonConvert.SerializeObject(Model) %>'.replace(/"/g, ""));
// ... 原本就有的语句
});
.Net MVC Controller/Action 最终可以return一个view。该view中会对Model中的数据进行渲染(服务端),然后返回渲染后的HTML到浏览器端(用户端)。
也可以直接返回 JSON response。
对于前一种返回方式,接口规则/调试有点麻烦。
如果可以在 view 页面中用JS或ASP表达式等方式打印出所有的Model数据
就好了。
console.log('<%: Newtonsoft.Json.JsonConvert.SerializeObject(Model) %>'.replace(/"/g, ""));
// 等效于
<%@ Namespace="Newtonsoft.Json" %>
console.log('<%: JsonConvert.SerializeObject(Model) %>'.replace(/"/g, ""));
以上语句得到的效果:
先用C#的JSON序列化库Newtonsoft.Json
对整个Model对象进行序列化(需要对该项目添加Newtonsoft.Json
依赖库),
得到了Model对象对应的JSON字符串。
然后用JS的console.log打印出了这个字符串值。
console.log('字符串')
// 字符串如何得到?使用ASP表达式
<%: 变量XXX %>
// 变量XXX 为什么包了一层JSON转换方法?
如果直接打印 `'<%: Model %>'` JS只能把该类型的类型名打印出来(namespaceName.className)
想看的是该对象的数据,所以用Newtonsoft.Json序列化该对象为JSON字符串后才打印。
其中<%: 变量名 %>
是ASP表达式,可以输出一个变量的值。
要注意的是:
'<%: xxx %>'
不是<%" xxx %>
(不过也不一定,看你打印的变量值类型)- 要打印的变量可以是 Model 也可以是 Model.xxx
- 上例中打印了整个Model数据的序列化结果的JSON字符串,其中的引号被打印成了
"
。所以使用了JS的字符串函数replace(regex, str),替换了引号。(如果你不需要,可以去掉)