我正在尝试使用Razor将对象作为JSON编写到我的Asp.Net MVC View中,如下所示:
<script type="text/javascript">
var potentialAttendees = @Json.Encode(Model.PotentialAttendees);
</script>
Run Code Online (Sandbox Code Playgroud)
问题是在输出中JSON被编码,我的浏览器不喜欢它.例如:
<script type="text/javascript">
var potentialAttendees = [{"Name":"Samuel Jack"},];
</script>
Run Code Online (Sandbox Code Playgroud)
如何让Razor发出未编码的JSON?
html.AttributeEncode与html.Encode有什么区别?
我需要使用转换Microsoft.AspNet.Mvc.Controller.JsonResult为字符串ASP.NET Core
这是我在ASP.NET MVC中的代码
public async Task<string> GetJsonData()
{
//...
var result = GetMyComplexObject();
//using Newtonsoft.Json.JsonConvert method
var jsonString = JsonConvert.SerializeObject(Json(result));
return jsonString;
}
public async Task<IActionResult> Index()
{
var myViewModel= new MyViewModel();
myViewModel.JsonString = GetJsonData();
return View(myViewModel);
}
public class MyViewModel
{
//...
public string JsonString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的cshtml中
var dataSet = {@(Model.JsonString))};
Run Code Online (Sandbox Code Playgroud)
但是,在生成的源中而不是引用的字段中,它们是html编码的,例如 "field1"
而不是运行字符串替换是没有更简洁的方法来转换JsonResult为string