Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回空响应的Web Api_C#_Asp.net_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

C# 返回空响应的Web Api

C# 返回空响应的Web Api,c#,asp.net,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Asp.net Mvc 4,Asp.net Web Api,我试图从api方法返回以下模型,但它返回的是空响应 [DataContract] public class MasterData { public IEnumerable<PROFILE> lstProfile { get; set; } public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; } public IEnumerable<TB>

我试图从api方法返回以下模型,但它返回的是空响应

[DataContract]
    public class MasterData
    {
        public IEnumerable<PROFILE> lstProfile { get; set; }
        public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; }
        public IEnumerable<TB> lstTB { get; set; }

        public MasterData() { }

    }
助手方法

    internal static MasterData GetAllMasterData()
    {
        MasterData masterData = new MasterData();

        DataSet ds = DBHelper.GetData("aaa", null);
        List<COMPETENCE> lstCompetence = new List<COMPETENCE>();
        if (ds != null && ds.Tables.Count > 0)
        {
            foreach (DataRow drow in ds.Tables[0].Rows)
            {
                        Adding in list
            }
        }
        masterData.lstCOMPETENCE = lstCompetence;

        ds = DBHelper.GetData("bbb", null);
        List<PROFILE> lstPROFILE = new List<PROFILE>();
        if (ds != null && ds.Tables.Count > 0)
        {
            foreach (DataRow drow in ds.Tables[0].Rows)
            {
                                   Adding in list
            }
        }
        masterData.lstProfile = lstPROFILE;

        ds = DBHelper.GetData("zzz", null);
        List<TBSite> lstTBSite = new List<TBSite>();
        if (ds != null && ds.Tables.Count > 0)
        {
            foreach (DataRow drow in ds.Tables[0].Rows)
            {
               Adding in list
            }
        }
        masterData.lstTBSite = lstTBSite;

        return masterData;
    }

如果我们将对象集合作为属性,是否必须使用DataContract和DataMember?

如果您像这样使用
DataContract
,那么我相信您还需要在响应中用
DataMember
标记您想要的所有内容:

[DataContract]
public class MasterData
{
    [DataMember]
    public IEnumerable<PROFILE> lstProfile { get; set; }

    [DataMember]
    public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; }

    [DataMember]
    public IEnumerable<TB> lstTB { get; set; }

    public MasterData() { }

}
[DataContract]
公共类主数据
{
[数据成员]
公共IEnumerable lstProfile{get;set;}
[数据成员]
公共IEnumerable{get;set;}
[数据成员]
公共IEnumerable lstB{get;set;}
公共主数据(){}
}
我自己也犯了那个错误。。。大约六次:)


或者,您可以省略
DataContract
属性,所有内容仍然可以序列化。

[DataContract]
public class MasterData
{
    [DataMember]
    public IEnumerable<PROFILE> lstProfile { get; set; }

    [DataMember]
    public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; }

    [DataMember]
    public IEnumerable<TB> lstTB { get; set; }

    public MasterData() { }

}
[DataContract]
公共类主数据
{
[数据成员]
公共IEnumerable lstProfile{get;set;}
[数据成员]
公共IEnumerable{get;set;}
[数据成员]
公共IEnumerable lstB{get;set;}
公共主数据(){}
}
我自己也犯了那个错误。。。大约六次:)


或者,您可以省略
DataContract
属性,所有内容仍然可以序列化。

操作是什么?操作是什么?我认为我们不需要为其指定DataContract和datamember吗webapi@JEMI-我认为你是对的,但如果你确实指定了DataContract,那么我认为您也必须使用DataMember。是否需要将DataMember添加到每个类(模式),如TB、Profile?@F11我建议您从类中删除DataContract,Web API将在内部处理。@F11-如果这些类也标记有DataContract,则是。或者,您可以一起省略DataContract属性,所有内容都应该像JEMI所提到的那样很好地序列化webapi@JEMI-我认为你是对的,但如果你确实指定了DataContract,那么我认为您也必须使用DataMember。是否需要将DataMember添加到每个类(模式),如TB、Profile?@F11我建议您从类中删除DataContract,Web API将在内部处理。@F11-如果这些类也标记有DataContract,则是。或者,您可以一起省略DataContract属性,所有内容都应该像JEMI提到的那样进行良好的序列化。
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
[DataContract]
public class MasterData
{
    [DataMember]
    public IEnumerable<PROFILE> lstProfile { get; set; }

    [DataMember]
    public IEnumerable<COMPETENCE> lstCOMPETENCE { get; set; }

    [DataMember]
    public IEnumerable<TB> lstTB { get; set; }

    public MasterData() { }

}