【问题标题】:Why I get error when I try to return anonymous type to client?为什么当我尝试将匿名类型返回给客户端时出现错误?
【发布时间】:2017-07-18 11:19:13
【问题描述】:

在我的操作方法中,我尝试返回匿名类型:

public JsonResult GetAssociatedProperty(int id)
{
    try
    {
        var property = _repository.GetLayerProperty(id);

        return Json(new { Result = "OK",  new { property.Id, property.VectorLayerId, property.FieldName, property.FieldType, property.FieldValue, property.Required} }, JsonRequestBehavior.AllowGet);
    }
    catch (Exception ex)
    {

        throw;
    }
}

但我收到此错误:

匿名类型成员声明器无效。必须使用成员分配、简单名称或成员访问来声明匿名类型成员。

在这一行:

return Json(new { Result = "OK",  new { property.Id, property.VectorLayerId, property.FieldName, property.FieldType, property.FieldValue, property.Required} }, JsonRequestBehavior.AllowGet);

知道如何修复错误并将匿名类型发送给客户端吗?

【问题讨论】:

  • 错误信息几乎可以告诉您问题所在,您阅读了吗? :)
  • 因为:匿名类型成员必须使用成员分配、简单名称或成员访问来声明。

标签: c# asp.net asp.net-mvc asp.net-web-api


【解决方案1】:

正如错误消息告诉您的,您需要为匿名类型的第二个成员指定一个名称

 return Json(new { 
                Result = "OK",  
                Prop = new { property.Id, property.VectorLayerId, property.FieldName, property.FieldType, property.FieldValue, property.Required} },
             JsonRequestBehavior.AllowGet);

【讨论】:

    【解决方案2】:
    public JsonResult GetAssociatedProperty(int id)
            {
                try
                {
                    var property = _repository.GetLayerProperty(id);
    
                    return Json(new {
                        Result = "OK",
                        Id = property.Id,
                        VectorLayerId = property.VectorLayerId,
                        FieldName = property.FieldName,
                        FieldType = property.FieldType,
                        FieldValue = property.FieldValue,
                        Required = property.Required 
                    }, JsonRequestBehavior.AllowGet);
                }
                catch (Exception ex)
                {
    
                    throw;
                }
            }
    

    以上代码可能对您有所帮助。

    【讨论】:

    • 首先,这与 OP 发布的类型结构不同。其次,这只是一个没有任何解释的代码转储,对任何人都没有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多