将一个属性从guid更改为string后,API返回500错误

时间:2016-08-08 18:12:07

标签: c# ajax serialization http-status-code-500

我有一个返回对象列表的API。该对象具有IEnumerable<String>类型的字段。该字段最初填充了Guid字符串列表,在Sitecore中设置为多列表:

characteristics.VertWilt = item.Fields.Get("vert wilt") != null ? item.Fields.Get("vert wilt").Split(',').Select(f =>f) : null;

但是,我想要检索多列表项的值,而不是Guid ID,因为我不想在我的页面上显示Guids。所以我改变了这一行:

characteristics.VertWilt = item.Fields.Get("vert wilt") != null ? item.Fields.Get("vert wilt").Split(',').Select(f => service.GetItem<IDropdownItem>(Guid.Parse(f)).Value) : null;

我的代码执行没有错误。这是API代码:

[HttpPost]
[HttpRoute("applyfilters")]
public HttpResponseMessage ApplyFilters([FromBody] FilterModel filters)
{
    VarietySelectorDataHelper helper = new VarietySelectorDataHelper(); 
    var data = helper.SearchVarieties(filters).Select(i => new VarietyModel(i)).OrderBy(v => v.SortOrder);
    return Request.CreateResponse(HttpStatusCode.OK, data);
}

data按原样填充,字段features.VertWilt看起来像option1, option2, option3而不是3F9F1AFC-4DD7-4445-83E2-CCBBB62BFF78,8A40AF0E-3F79-4060-BD9D-EE0A29CB1D52,B596A791-5917-45B6-BB2F-FE433FEE6039

但是,在控制台中我看到500错误,我的数据没有显示在页面上。我用Firebug来检查错误。

"message": "An error has occurred.",
"exceptionMessage": "Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
)."

为什么期待Guid?哪个需要改变?

0 个答案:

没有答案