변환합니다.뷰의 JSON 개체에 대한 순 개체
를 변환하고 싶다.뷰의 JSON에 대한 넷오브젝트저의 뷰 모델은 이렇습니다.
public class ViewModel{
public SearchResult SearchResult { get; set;}
}
public class SearchResult {
public int Id { get; set; }
public string Text{ get; set; }
}
변환하고 싶다Model.SearchResult
JSON 오브젝트에 접속합니다.지금은 이렇게 하고 있어요.
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
//....
var s = @serializer.Serialize(Model.Institution);
결과는 이렇습니다.
var s = { "Name":"a","Id":1};
Create:228Uncaught SyntaxError: Unexpected token &
이를 JSON 개체로 올바르게 변환하려면 어떻게 해야 합니까?
다음 방법을 사용해 보십시오.
@Html.Raw(Json.Encode(Model.Content))
asp.net mvc 2부터 이 도우미를 사용하고 있습니다.
public static MvcHtmlString ToJson(this HtmlHelper html, object obj)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return MvcHtmlString.Create(serializer.Serialize(obj));
}
public static MvcHtmlString ToJson(this HtmlHelper html, object obj, int recursionDepth)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RecursionLimit = recursionDepth;
return MvcHtmlString.Create(serializer.Serialize(obj));
}
보기:
<script>
var s = @(Html.ToJson(Model.Content));
</script>
시리얼라이저를 JSON으로 교체해야 합니다.Hemant가 참조한 것과 같이 지금 인코딩(..)합니다(JavaScriptSerializer 자체 사용).
문제의 원인은 HTML이 JSON을 인코딩하는 "@"입니다.@Html을 사용할 수 있습니다.Raw(..)를 사용하여 이 동작을 방지합니다.
+: Json을 찾습니다.인터넷 http://json.codeplex.com/
JSON.Net 업데이트
조금 전에 도우미를 JSON.net로 업데이트했습니다(더 나은 업데이트).
일부 사용자는 이전 코드를 계속 읽고, 업투표하고, 사용하고 있는 것 같습니다.아래의 새로운 버전이나 Matthew Nichols가 코멘트에서 알아차린 것처럼 NGon을 사용하여 더 나은 방법을 사용했으면 합니다.
코드는 다음과 같습니다.
using System;
using Newtonsoft.Json;
namespace System.Web.Mvc
{
public static class HtmlHelperExtensions
{
private static readonly JsonSerializerSettings settings;
static HtmlHelperExtensions()
{
settings = new JsonSerializerSettings();
// CamelCase: "MyProperty" will become "myProperty"
settings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
}
public static MvcHtmlString ToJson(this HtmlHelper html, object value)
{
return MvcHtmlString.Create(JsonConvert.SerializeObject(value, Formatting.None, settings));
}
}
}
이것은 원래 답변에 대한 업데이트입니다.또한 @Tyrsius :D의 끈질긴 조조의 결과로서, 저는 그 결과, 그 결과, 제가 에서 생성된 vars에 접근할 수 없었다는 사실을 포기하기를 거부했습니다.<script>
.js 라이브러리의 MVC 5 cshtml 페이지에 있는 태그는 별도의 파일에 있습니다.이 페이지에서 작성한 파라미터가 글로벌 스코프를 만들고 플러그인 위젯에서 사용할 수 있는 @section scripts 문 블록 내에 스크립트태그를 배치하면 글로벌 스코프를 만들 수 있습니다.지금까지의 복잡한 앱에서는 사용하고 있지 않지만, 다른 앱의 protoType에서 사용하고 있습니다.답은 다음과 같습니다.@Html 입니다.Raw(...)가 동작하여 즉시 사용할 수 있는 오브젝트를 연재할 수 있었습니다.
이건 앞으로 쓸 건데...나와 함께 있어줘서 고마워 @Tyrsius
@section scripts
{
<script type="text/javascript">
@using MRTCProtoType.Models.ControllerData.Contracts
var testVar = @Html.Raw(JsonConvert.SerializeObject(WMMWorkloadTestData.getWorkloadTestData()));
</script>
@Scripts.Render("~/bundles/homeworkflow")
}
다음 코드는 별도의 .js 파일에 있습니다.
$(document).ready(function() {
alert(JSON.stringify(testVar));
});
언급URL : https://stackoverflow.com/questions/8502146/convert-net-object-to-json-object-in-the-view
'programing' 카테고리의 다른 글
리액션: 아이콘을 표시하지 않음 (0) | 2023.04.06 |
---|---|
Wordpress 기본 갤러리 출력 변경 (0) | 2023.04.06 |
Woocommerce 카테고리 설명 표시 방법 (0) | 2023.04.06 |
Oracle 데이터베이스에서 "SET DEFINE OFF"를 사용해야 하는 시기 또는 이유 (0) | 2023.04.06 |
*를 'React'에서 React로 Import하고, vs 'React'에서 React를 Import한다. (0) | 2023.04.06 |