C# 将JSON文件传递到Javascript ASP.NET MVC4
我目前的问题是:如何将JSON对象(原样或用Newtonsoft.JSON反序列化的C#对象)传递到javascript文件 我尝试了以下方法:C# 将JSON文件传递到Javascript ASP.NET MVC4,c#,javascript,asp.net,json,asp.net-mvc-4,C#,Javascript,Asp.net,Json,Asp.net Mvc 4,我目前的问题是:如何将JSON对象(原样或用Newtonsoft.JSON反序列化的C#对象)传递到javascript文件 我尝试了以下方法: Response.Write(string.Concat("<input id='data' type='hidden' value='", json_file, "' />")); Response.Write(string.Concat(“”)); 但是当json文件以HTML格式呈现(作为HTML属性)时,它会在引号字符上停止,我
Response.Write(string.Concat("<input id='data' type='hidden' value='", json_file, "' />"));
Response.Write(string.Concat(“”));
但是当json文件以HTML格式呈现(作为HTML属性)时,它会在引号字符上停止,我试图对其进行转义,但它也不起作用。
因此,在javascript文件中使用JSON.parse()时,语法无效
解决的问题:
-在my.cshtml文件中声明了一个javascript变量数据,将jsonfile作为@ViewBag元素放入其中。
-在我的javascript窗口中找到了它
-将其解析为json,使用它,魔术般地完成了
(感谢回答的人)如果这是一个
json
对象,为什么不在页面上的javascript变量中插入该对象,因为您可能想在Ajax中使用该变量
function someThingClicked(){
var myObject = <%= json_file %>;
$.ajax({
type: "POST",
url: "SomeUrl",
data: myObject,
success: function () { },
contentType: "application/json; charset=utf-8",
dataType: "json"});
}
如果您使用的是razor,您可以写下如下内容:
var myObject = @Html.Raw(ViewBag.json_file);
假设您已将
json_文件
字符串从控制器添加到ViewBag
中。在这种情况下,您可以尝试使用这是您连接的结果,导致值在您指定之前终止。例如,在json\u文件中有一个”
字符
例如,如果文件包含
var x = 'this is a string'
然后,连接的结果将产生无效的html
<input id='data' type='hidden' value='var x = 'this is a string'' />
(假设您已经在使用jQuery,否则您将不得不使用纯香草JS,这需要做更多的工作,但可以完成
Response.Write(string.Concat("<input id='data' type='hidden' value=\"", json_file.Replace('\"', '\''), "\" />"))
Response.Write(string.Concat)(“其他解决方案,而不是在html属性中打印json字符串
创建一个在控制器中返回json的操作
public string GetData()
{
//read your json file
return json_file; //return your json string
}
在视图端,放置输入标记并通过ajax请求获取json_文件
<input id='data' type='hidden' />
<script>
$(function () {
$.post("/yourControllerName/getData", {}, function (response) {
$("#data").val(response);
},'json');
});
</script>
$(函数(){
$.post(“/yourControllerName/getData”,{},函数(响应){
$(“#数据”).val(答复);
}“json”);
});
json_文件是json字符串还是文件名?它是一个字符串。(我打开了一个StreamReader,将其读到最后,并将其存储在一个字符串中)。json文件格式良好。我让我的应用程序使用不带引号的json文件。在json_文件中是否有任何
或
?是的,这正是我所描述的问题。当我使用带引号的json文件时,当json文件没有引号时,它会崩溃
public string GetData()
{
//read your json file
return json_file; //return your json string
}
<input id='data' type='hidden' />
<script>
$(function () {
$.post("/yourControllerName/getData", {}, function (response) {
$("#data").val(response);
},'json');
});
</script>