简体   繁体   English

如何在Task中定义output参数<iactionresult></iactionresult>

[英]How to define output parameter in Task<IActionResult>

I'm switching tech stacks so I'm a bit confused here.我正在切换技术堆栈,所以我在这里有点困惑。 This function should return an object此 function 应返回 object

public async Task<IActionResult> Search(CoinModel Coin)
{
    var date = Coin.tracking_date.ToLocalTime().ToString("dd/MM/yyyy");
    var dateformat = DateTime.Parse(System.Web.HttpUtility.UrlDecode(date + " 00:00:00.0000000"));
    var issue = await _db.Coins.SingleOrDefaultAsync(c => c.coin == Coin.coin.ToUpper() && c.tracking_date == dateformat);
    return issue == null ? NotFound() : Ok(issue);
}

But I can't seem to access the result like this但我似乎无法访问这样的结果

var search = await Search(Coin);
return search.id;

You return an IActionResult in this method but your return type is a Coin (Entity).您在此方法中返回 IActionResult,但您的返回类型是 Coin(实体)。 You should change the return type of your method.您应该更改方法的返回类型。 I assume that class name of coin entity is 'Coin'我假设硬币实体的 class 名称是“硬币”

    [NonAction]
    public async Task<Coin> Search(CoinModel Coin)
    {
        var date = Coin.tracking_date.ToLocalTime().ToString("dd/MM/yyyy");
        var dateformat = DateTime.Parse(System.Web.HttpUtility.UrlDecode(date + " 00:00:00.0000000"));
        var issue = await _db.Coins.SingleOrDefaultAsync(c => c.coin == Coin.coin.ToUpper() && c.tracking_date == dateformat);
        return issue == null ? NotFound() : Ok(issue);
    }

By the way, as this method is not an Action method, you can define it using [NonAction]顺便说一句,由于该方法不是 Action 方法,您可以使用 [NonAction] 来定义它

I would suggest a helper method.我会建议一个辅助方法。

private async Task<Coin> SearchAsync(CoinModel Coin)
{
    var date = Coin.tracking_date.ToLocalTime().ToString("dd/MM/yyyy");
    var dateformat = DateTime.Parse(System.Web.HttpUtility.UrlDecode(date + " 00:00:00.0000000"));
    var issue = await _db.Coins.SingleOrDefaultAsync(c => c.coin == Coin.coin.ToUpper() && c.tracking_date == dateformat);
    return issue == null ? NotFound() : Ok(issue);
}


public async Task<IActionResult> Search(CoinModel coin)
{
    var issue = await SearchAsync(coin);
    return issue == null ? NotFound() : Ok(issue);
}

Btw.顺便提一句。 In C# the convetion is to start argument with a common letter, so CoinModel coin , not CoinModel Coin .在 C# 中,约定是用一个普通字母开始参数,所以CoinModel coin ,而不是CoinModel Coin

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

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