2016-08-22 69 views
0

我正在使用Json.Net包,我的问题是当我想获得索引值时,它给了我这样一个错误“'对象'不包含对于 '名称'”“对象”不包含“名称”的定义

在这里的定义是我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'通常不会形成一个好的类名。它更适合于一种方法,因为如果包含一个动作(“get”)。最好给你的班级命名,以便它描述实际的模型。在你的情况下,可能是像'专辑'或'书'(或任何它有一个发布日期)。 –

回答

-1

您可以通过三种方式做到这一点,第一个是通过改变从对象GetBasic的返回类型GetData那么方法的签名如下所示:

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

在这种情况下,你不需要再改变任何东西,你的代码就可以正常工作。

第二个选项对你来说是改变方法调用不改变方法的定义,这将如下所示:

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

由于具有现场的GetData称为Name时仍将工作。

第三个选项是让GetBasic像下面这样的构造:

public object GetData() 
{ 

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

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

这样就可以使用这样的:

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

你要的GetBasic返回类型更改为GetData得到的定义。

public GetData GetBasic() { 

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

    return JsonConvert.DeserializeObject<GetData>(json); 

}