当我尝试将匿名类型返回给客户端时,为什么会出现错误?

时间:2017-07-18 11:19:13

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

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

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);

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

2 个答案:

答案 0 :(得分:3)

正如错误消息所示,您需要匿名类型的第二个成员名称

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

答案 1 :(得分:-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;
            }
        }

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