Skip to main content
 首页 » 编程设计

c#之.NET Core Web 应用程序,将对象传递给 Controller 并进行转换总是失败

2024年02月27日37xxx_UU

我有一个使用 ASP.NET MVC 6 的 .NET Core Web 应用程序。我有一个用于最常见的 CRUD 操作的通用 API Controller 。问题是我有多种不同类型的 ID。例如,我同时拥有 int 和 Guid。

我的通用 Get Controller 如下所示:

// GET api/values/5 
[HttpGet("api/[controller]/{id}")] 
public virtual async Task<IEntity> Get(object id) 
{ 
    var myEntity = await _myRepository.FindAsync(id); 
    if (myEntity == null) 
        return ItemNotFound(); 
 
    return myEntity; 
} 

如果我将方法参数更改为接受一个 int 而不是一个对象,它就可以正常工作。但是,如果我将对象转换为 int,则会得到无效转换异常。有没有办法成功地将对象转换为我期望的样子?

请您参考如下方法:

我是否认同你的设计,不在本问答范围内。但要解决您的问题,您可以这样做:

public virtual async Task<IEntity> Get(string id) 
{ 
    var parsedId; 
    if (int.TryParse(id, out parsedId)) 
    { 
        // It was an integer 
    } 
    else  
    { 
        if (Guid.TryParse(id, out parsedId)) 
        { 
            // It was a Guid 
        } 
        else  
        { 
            // It was neither so what do you want to do? 
        } 
    } 
}