2016-08-22 6 views
0

Json.Net 패키지를 사용하고 있는데 문제가 발생하여 색인의 값을 가져오고 싶습니다. '개체'에 포함되지 않은 오류가 발생합니다. '이름' "여기"object"에 'Name'에 대한 정의가 없습니다.

에 대한 정의 내 GetData.cs 파일 내용이다 :

using System; 
using System.Web; 
using System.Net; 
using Newtonsoft.Json; 

public class GetData 
{ 
    public string Name{set;get;} 
    public string ReleaseDate{set;get;} 

    public object GetBasic(){ 

     string json = @"{ 
      'Name': 'Bad Boys', 
      'ReleaseDate': '1995-4-7T00:00:00'}"; 

     GetData Data = JsonConvert.DeserializeObject<GetData>(json); 
     return Data; 

    } 

} 

이 내 test.cshtml 파일 내용이다 :

@{ 
    GetData Data = new GetData(); 
    var objects = Data.GetBasic(); 
} 

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
    </head> 
    <body> 
     @objects.Name 
    </body> 
</html> 

도움을 사전에 감사합니다

+0

본격적인 MVC 또는 WebMatrix를 사용하고 있습니까? – CodeCaster

+0

이름을 향상시킬 수 있습니다. 'GetData'는 보통 좋은 클래스 이름을 만들지 않습니다. if가 액션 ("get")을 포함하기 때문에 메소드에 더 적합합니다. 그것은 모델 인 실제 물건을 설명하도록 수업의 이름을 짓는 것이 낫습니다. 귀하의 경우에는 '앨범'또는 '도서'(또는 출시 날짜가있는 것은 무엇이든)와 같을 수 있습니다. –

답변

-1

당신은 세 가지 방법으로이 작업을 수행 할 수 있습니다 첫번째 다음 메소드 의지의 서명은 다음과 같습니다 GetData에 개체에서 GetBasic의 반환 형식을 변경하여 하나이 경우

public GetData GetBasic() 
{ 
    // do Something here 
} 

당신은 아무것도 바꿀 필요가 없습니다, 당신의 코드는 예상대로 잘 작동합니다. GetData의 가진 필드 Name라고하기 때문에 작동

GetData objects = (GetData)Data.GetBasic(); 

을 :

두 번째 옵션은 당신을 위해는 다음과 같은 방법 정의를 변경하지 않고있는 것이다 모습을 메서드 호출을 변경합니다. 이처럼 사용할 수 있도록

public object GetData() 
{ 

    string json = @"{ 
      'Name': 'Bad Boys', 
      'ReleaseDate': '1995-4-7T00:00:00'}"; 

    GetData Data = JsonConvert.DeserializeObject<GetData>(json); 
    return Data; 
} 

:

세 번째 옵션은 다음과 같은 생성자로 GetBasic을 할 것입니다

GetData DataObjects = new GetData(); 
// DataObjects.Name will have the expected value 
0

명백한 문제입니다 GetBasic()의 반환 형식 object입니다. 따라서 실제 유형으로 변경하십시오.

public GetData GetBasic() 
{ 
    // ... 
} 

그러나 OO, C# 및 MVC에 적용되는 모든 구성을 우회하는 것으로 보입니다. 특히이 뷰는 뷰에서 수행하지 말아야하지만 컨트롤러에서는 뷰를 모델 주석으로 장식해야합니다.

그래서 컨트롤러는 다음과 같이 표시됩니다 같은

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var data = new GetData().GetBasic(); 
     return View(data); 
    } 

} 

그리고보기 :

@model GetData 

... 

     @objects.Name 
1

당신은 정의를 얻을 수 GetDataGetBasic의 반환 형식을 변경해야합니다.

public GetData GetBasic() { 

    string json = @"{ 
     'Name': 'Bad Boys', 
     'ReleaseDate': '1995-4-7T00:00:00'}"; 

    return JsonConvert.DeserializeObject<GetData>(json); 

} 
관련 문제