Reputation: 6865
I have a class that has Guid id.
public class Product {
public Guid Id {get;set;}
}
and I am using this context in my web api application.
public class ProductController : ApiController
{
readonly ProductContext database = new ProductContext();
public IHttpActionResult Get(string id){
database.find(id); // does not find.
}
}
if I change action parameter as guid it finds.
public IHttpActionResult Get(Guid id){
database.find(id); // finds.
}
But if a user sends invalid id parameter, applicaiton throws exception.
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Guid' for method 'System.Web.Http.IHttpActionResult Get(System.Guid)
Should I make all of id
properties as string? Which way is best?
Upvotes: 0
Views: 2358
Reputation: 40
cast string to Guid.
public class ProductController : ApiController
{
readonly ProductContext database = new ProductContext();
public IHttpActionResult Get(string id){
database.find(new Guid(id));
}
}
Upvotes: 0
Reputation: 18135
You could try to use a Guid?
public IHttpActionResult Get(Guid? id)
{
if (id.HasValue)
{
database.find(id.Value); // finds.
}
else
{
// invalid ID
}
}
Upvotes: 2