繁体   English   中英

如何在ASP.NET Web API2中自定义响应

[英]How to custom response in asp.net web api2

当添加这两行时,此函数中的问题。

UserImage = GetImagePath(db.Users.FirstOrDefault(x => x.Id == p.User_ID).Image),  
InsertDate = p.InsertDate.ToString("dd/MM/yyyy")

我需要自定义图像路径和自定义日期格式,显示此​​问题。
LINQ to Entities无法识别System.String ToString(System.String)方法,并且该方法无法转换为商店表达式

private static string GetImagePath(string ImageName)
{
    return System.Configuration.ConfigurationManager.AppSettings["websiteurl"].ToString() + "/uploads/" + ImageName;
}

[HttpGet]
[Route("Comments")]
public IHttpActionResult Comments(string Post_ID)
{
    var list = db
        .ShalehComments
        .Where(p => p.Shaleh_ID == Post_ID && p.ParentID == 0)
        .Select(p => new {
            ID = p.ID,
            Comment = p.Comment,
            User = db.Users.FirstOrDefault(x=> x.Id == p.User_ID).FullName,
            UserImage = GetImagePath(db.Users.FirstOrDefault(x => x.Id == p.User_ID).Image),//here problem
            InsertDate = p.InsertDate.ToString("dd/MM/yyyy")//and here
    }).ToList();

    return Ok(
        new
        {
            result = true,
            data = list
        }
    );
}

发生此错误是因为Entity Framework不知道如何在sql执行.ToString()GetImagePath方法。 因此,您应该使用ToList加载数据。因此,您可以尝试执行以下操作:

[HttpGet]
[Route("Comments")]
public IHttpActionResult Comments(string Post_ID)
{
    var list = db
        .ShalehComments
        .Where(p => p.Shaleh_ID == Post_ID && p.ParentID == 0)
        .ToList()//add ToList
        .Select(p => new {
            ID = p.ID,
            Comment = p.Comment,
            User = db.Users.FirstOrDefault(x=> x.Id == p.User_ID).FullName,
            UserImage = GetImagePath(db.Users.FirstOrDefault(x => x.Id == p.User_ID).Image),
            InsertDate = p.InsertDate.ToString("dd/MM/yyyy")//and here
    }).ToList();

    return Ok(
        new
        {
            result = true,
            data = list
        }
    );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM