在我的web api控制器方法中,我有。
public IHttpActionResult GetMember(int id)
{
Member member = db.Members.Find(id);
if (member == null)
{
return NotFound();
}
return Ok(member);
}
基本上它在这里检查是否没有id = 0的当前成员,它返回NotFound ......这就是UI正在接收的内容。
场景是,对于0值,API应该提供一个具有良好默认值的新项目。有关如何实现此目的的任何示例?
我想出了这个,但却无法让它正常工作。
public IHttpActionResult GetMember(int id)
{
Member member = db.Members.Find(id);
if (id > 0)
{
var members = db.Members.Find();
member = members.FirstOrDefault((m) => m.MemberId == id);
//return NotFound();
if (member == null)
{
return NotFound();
}
else
{
db.Members.Add(member);
db.SaveChanges();
}
return Ok(member);
}
}
答案 0 :(得分:2)
只需初始化一个新的成员对象并将其返回给调用方法。
public IHttpActionResult GetMember(int id)
{
Member member = new Member();
if (id > 0)
{
var members = db.Members.Find();
member = members.FirstOrDefault((m) => m.MemberId == id);
}
else
{
// Set some values if you need Ok(new Member { MemberId = 0, FirstName = "New"} )
}
return Ok(member);
}
答案 1 :(得分:2)
我不确定我是否理解目标,但如果我理解正确的话,这可能会发生:
public IHttpActionResult GetMember(int id)
{
Member member = db.Members.Find(id);
if (member == null)
{
if (id != 0)
{
member = new Member();
}
else
{
return NotFound();
}
}
return Ok(member);
}
这就是你想要的吗?
答案 2 :(得分:1)
#js_outer_div
答案 3 :(得分:0)
以下是此代码所基于的原始代码:
public IHttpActionResult Get(int id)
{
try
{
Product product;
var productRepository = new ProductRepository();
if (id > 0)
{
var products = productRepository.Retrieve();
product = products.FirstOrDefault(p => p.ProductId == id);
if (product == null)
{
return NotFound();
}
}
else
{
product = productRepository.Create();
}
return Ok(product);
}
catch (Exception ex)
{
return InternalServerError(ex);
}
}
要求是从产品更改为成员并包括EF。
考虑保留存储库的使用并在存储库类中添加EF代码而不是此处。 还要考虑向存储库检索方法添加一个重载,该方法将获取一个id并找到所需的成员。然后你可以在这里删除对FirstOrDefault的调用。