C#从ObjectResult到字符串(或获取值)

时间:2018-10-01 10:10:26

标签: c# asp.net-core-2.0

我正在使用IActionResult(任务)上传文件,我在控制器中引用了该文件。我想找回的是文件名。

控制器->

        var imageLocation = await _imageHandler.UploadImage(image);

ImageHandler->

    public async Task<IActionResult> UploadImage(IFormFile file)
    {
        var result = await _imageWriter.UploadImage(file);

        return new ObjectResult(result);
    }

我的值存储在imageLocation中,但是我不知道如何访问它(我需要“ Value”字符串,以便可以将其添加到DB)。

enter image description here

我尝试搜索所有内容,但每个人都在使用列表。我只需要一个字符串。 希望你们能帮助我。谢谢!

1 个答案:

答案 0 :(得分:4)

您可以将结果转换为所需的类型并调用属性

控制器

var imageLocation = await _imageHandler.UploadImage(image);
var objectResult = imageLocation as ObjectResult;
var value = objectReult.Value;

或仅重构ImageHandler.UploadImage函数以返回实际类型以避免强制转换

public async Task<ObjectResult> UploadImage(IFormFile file) {
    var result = await _imageWriter.UploadImage(file);
    return new ObjectResult(result);
}

并获得控制器中预期的值

var imageLocation = await _imageHandler.UploadImage(image);
var value = imageLocation.Value;

更好的是,让该函数只返回所需的值

public Task<string> UploadImage(IFormFile file) {
    return _imageWriter.UploadImage(file);
}

那样,您将获得在控制器中调用函数时所期望的结果。

string imageLocation = await _imageHandler.UploadImage(image);