我正在使用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 :(得分:1)
您必须将GetBasic
的返回类型更改为GetData
才能获得定义。
public GetData GetBasic() {
string json = @"{
'Name': 'Bad Boys',
'ReleaseDate': '1995-4-7T00:00:00'}";
return JsonConvert.DeserializeObject<GetData>(json);
}
答案 1 :(得分: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
答案 2 :(得分:-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