2017-12-09 16 views
0

json 개체를 뷰 소스의 일부로 렌더링했습니다. 그 json을 C# model 객체로 변환하고 partial view가 모델 객체에 강하게 입력 되었기 때문에 그 객체를 부분 뷰로 전달하려고합니다.Json 개체에서 mvc의 C# 모델 개체보기

예는 :

jsonIdentifier = '{"Identifier": { "name":"uno","contextId":"dos"}}' 

@{ model.Identifier = Parsing(jsonIdentifier)} 
@Html.Partial("_IdentifierPartial", m=>m.Identifier) //where Identifier is the object needs to be passed to _IdentifierPartial 
+0

지금까지 해보신 것은 무엇입니까? 당신은 * [Deserialize JSON with C#] (https://stackoverflow.com/q/7895105/3744182) *를 읽고 테스트 했습니까? – dbc

+0

@dbc'JavaScriptSerializer'는 사용되지 않습니다. 사용하는 답변은 권장하지 않습니다. –

+0

@CamiloTerevinto - "JSON을 C#으로 어떻게 역 직렬화합니까?"라는 더 좋은 일반 제 답변이 없다는 뜻입니까? 또는 [JSON 객체를 사용자 정의 C# 객체로 변환하는 방법] (https://stackoverflow.com/q/2246694/3744182) * 및 * [JSON.NET을 사용하여 JSON 데이터를 C#으로 비순차화] (https : //stackoverflow.com/q/2546138) * 대신에? – dbc

답변

0

당신은 @ Html.Partial 대신 @ Html.Action를 사용해야합니다. jsonIdentifier를 문자열 매개 변수로 전달한 다음 Json.NET을 사용하여 적절한 형식의 객체로 변환하십시오.

로 ..

Output my partial with that Json: 
<div> 
    @{ 
     string json = "{Make: \"Toyota\", Model: \"Camry\", Year: 2017}"; 
    } 
    @Html.Action("RenderCarScreen", new { carJson = json }); 
</div> 

귀하의 WebMethod 우리는 @Html.Action()@Html.Partial의 도움으로이를 달성 할 수

public ActionResult RenderCarScreen(string carJson) 
    { 

     Car car = Newtonsoft.Json.JsonConvert.DeserializeObject<Car>(carJson); 
     return PartialView("CarScreen", car); 
    } 
0

... 같이 보일 것입니다. @Html.Action()에는 부분 페이지를 렌더링하는 작업 방법의 도움으로 작업 방법이 필요합니다. @Html.Partial()은 페이지를 렌더링하는 객체 값을 기반으로하는 필요한 작업 방법이 아닙니다. 따라서 @Html.Partial()@Html.Action()과 비교하면 더 나은 성능을 제공합니다.

using Newtonsoft.Json; 
@{ 
    string JsonStr = {\"user\":\"me\",\"payment_method\":\"card\",\"items_bought\":[{\"id\":\"001\",\"name\":\"desk\",\"delivered\":\"true\"},{\"id\":\"455\",\"name\":\"chair\","delivered\":\"false\"},{\"id\":\"234\",\"name\":\"mousepad\",\"delivered\":"false\"},{\"id\":\"135\",\"name\":\"cabinet\",\"delivered\":\"false\"}]} 
    var JsonObject = JsonConvert.DeserializeObject<MyJSON>(JsonStr); 
} 
<div> 
    @Html.Partial("_IdentifierPartial", JsonObject) 
</div> 

위 코드는 정상적으로 작동하며 요구 사항을 충족시킵니다. 하지만이 방법은 바람직하지 않습니다. 더 나은 방법으로 json 문자열을 컨트롤러 쪽에서 모델 객체로 변환하고 모델 객체를 전달할 수 있습니다.

예를 들어

:

@model ModelClass 
<div> 
    @Html.Partial("_IdentifierPartial",Model.PartialModel) 
</div> 

접근 위는 훨씬 더 빨리 브라우저에서 페이지를 렌더링한다.