Angularjs 将IEnumerable从web api控制器发送到angular js
我正在尝试将IEnumerable从web api控制器发送到AngularJs控制器。 我使用的代码是 Web Api:Angularjs 将IEnumerable从web api控制器发送到angular js,angularjs,linq,http,asp.net-web-api,get,Angularjs,Linq,Http,Asp.net Web Api,Get,我正在尝试将IEnumerable从web api控制器发送到AngularJs控制器。 我使用的代码是 Web Api: readonly InventoryEntities _db = new InventoryEntities(); public IEnumerable<FDVOEligibilityRequest> Get() { return _db.FDVOEligibilityRequests.AsEnumerable(); } 这很好,但是现在我使用linq
readonly InventoryEntities _db = new InventoryEntities();
public IEnumerable<FDVOEligibilityRequest> Get()
{
return _db.FDVOEligibilityRequests.AsEnumerable();
}
这很好,但是现在我使用linq来包含相关的表,但它不起作用。angularJs代码是相同的。
我做错了什么
readonly InventoryEntities _db = new InventoryEntities();
public IEnumerable<FDVOEligibilityRequest> Get()
{
return _db.FDVOEligibilityRequests
.Include("FDVOEligibilityRequestMandatoryField")
.Include("FDVOEligibilityRequestDCCField").AsEnumerable();
}
如果它是500并且发生在您成功地从您的操作返回之后,那么它可能是序列化期间的异常 我建议检查FDVOEligibilityRequest和FDVOELIGIBILITYREQUESTMANDTORYELD/FDVOELIGIBILITYREQUESTDCFELD之间是否没有循环引用 或者尝试使用以下代码对其进行诊断:
字符串序列化(MediaTypeFormatter格式化程序,T值)
{
//创建一个虚拟HTTP内容。
Stream=新的MemoryStream();
var内容=新的流内容(流);
///序列化对象。
WriteToStreamAsync(typeof(T),value,stream,content,null).Wait();
//读取序列化的字符串。
流位置=0;
返回content.ReadAsStringAsync().Result;
}
试一试{
var val=_db.fdvoelibilityRequests
.包括(“FDVOEligibilityRequestMandatoryField”)
.Include(“FDVOEligibilityRequestDCCField”).AsEnumerable();
var str=Serialize(新的JsonMediaTypeFormatter(),val);
}
捕获(异常x)
{//这里是断点
}
ps:在这种情况下,最重要的是使用DTO而不是EF对象,比如。如果是500,并且发生在您成功地从操作返回之后,那么在序列化过程中它可能是一个异常 我建议检查FDVOEligibilityRequest和FDVOELIGIBILITYREQUESTMANDTORYELD/FDVOELIGIBILITYREQUESTDCFELD之间是否没有循环引用 或者尝试使用以下代码对其进行诊断:
字符串序列化(MediaTypeFormatter格式化程序,T值)
{
//创建一个虚拟HTTP内容。
Stream=新的MemoryStream();
var内容=新的流内容(流);
///序列化对象。
WriteToStreamAsync(typeof(T),value,stream,content,null).Wait();
//读取序列化的字符串。
流位置=0;
返回content.ReadAsStringAsync().Result;
}
试一试{
var val=_db.fdvoelibilityRequests
.包括(“FDVOEligibilityRequestMandatoryField”)
.Include(“FDVOEligibilityRequestDCCField”).AsEnumerable();
var str=Serialize(新的JsonMediaTypeFormatter(),val);
}
捕获(异常x)
{//这里是断点
}
ps:在这种情况下,最重要的是使用DTO而不是像这样的EF对象。什么不起作用?您会得到什么而不是预期的结果?我在anular侧得到一个错误您的返回类型对于新旧Web Api控制器都是相同的,但是在新的Web Api控制器中您是否添加了属性?我想问的是,您的模型FDVOEligibilityRequest是否仍然是包含语句的有效模型?这就是FDVOEligibilityRequest在新的Web Api控制器公共部分类FDVOEligibilityRequest{public int Id{get;set;}public string TestName{get;set;}public string GroupName中的样子{get;set;}public int MandatoryFieldsID{get;set;}public int DCCFieldsID{get;set;}public virtual FDVOEligibilityRequestMandatoryField FDVOEligibilityRequestMandatoryField{get;set;}public virtual FDVOEligibilityRequestDCCField FDVOEligibilityRequestDCCField{get;set;}什么不起作用意味着什么?你得到了什么而不是预期的结果?我得到了一个错误。你的返回类型对于新旧Web Api控制器都是相同的,但是在新的Web Api控制器中,你是在添加属性吗?我问的是,你的模型FDVOEligibilityRequest是否仍然是包含语句的有效模型?这是在新的Web Api controllerpublic部分类中,FDVOEligibilityRequest类似于FDVOEligibilityRequest{public int Id{get;set;}public string TestName{get;set;}public string GroupName{get;set;}public int MandatoryFieldsID{get;set;}public int DCCFieldsID{get;set;}公共虚拟FDVOEligibilityRequestMandatoryField FDVOEligibilityRequestMandatoryField{get;set;}公共虚拟FDVOEligibilityRequestDCCField FDVOEligibilityRequestDCCField{get;set;}
readonly InventoryEntities _db = new InventoryEntities();
public IEnumerable<FDVOEligibilityRequest> Get()
{
return _db.FDVOEligibilityRequests
.Include("FDVOEligibilityRequestMandatoryField")
.Include("FDVOEligibilityRequestDCCField").AsEnumerable();
}
public partial class FDVOEligibilityRequest
{
public int Id { get; set; }
public string TestName { get; set; }
public string GroupName { get; set; }
public int MandatoryFieldsID { get; set; }
public int DCCFieldsID { get; set; }
public virtual FDVOEligibilityRequestMandatoryField FDVOEligibilityRequestMandatoryField { get; set; }
public virtual FDVOEligibilityRequestDCCField FDVOEligibilityRequestDCCField { get; set; }
}
string Serialize<T>(MediaTypeFormatter formatter, T value)
{
// Create a dummy HTTP Content.
Stream stream = new MemoryStream();
var content = new StreamContent(stream);
/// Serialize the object.
formatter.WriteToStreamAsync(typeof(T), value, stream, content, null).Wait();
// Read the serialized string.
stream.Position = 0;
return content.ReadAsStringAsync().Result;
}
try {
var val = _db.FDVOEligibilityRequests
.Include("FDVOEligibilityRequestMandatoryField")
.Include("FDVOEligibilityRequestDCCField").AsEnumerable();
var str = Serialize(new JsonMediaTypeFormatter(), val);
}
catch (Exception x)
{ // break point here
}