0

账户服务:

public async Task<string> PostRegistrationToApi(NameValueCollection form)
        try
        {
            string str = await url.WithHeaders(new { Accept = "application /json", User_Agent = "Flurl" }).PostJsonAsync(myDictionary).ReceiveJson();
            return str;
        }

这是它在界面中的样子:

public interface IAccountService
{
    Task<string> PostRegistrationToApi(NameValueCollection form);

这是我的控制器视图:

                string str = await _accountService.PostRegistrationToApi(myform);
                return RedirectToAction("Register");

这是我收到的错误消息:

无法将类型“System.Dynamic.ExpandoObject”隐式转换为“字符串”

我不知道如何解决这个错误。有人可以告诉我此错误消息的含义以及如何解决吗?起初,我以为是 TResult 类型的问题,但似乎即使我将变量更改为字符串类型,与 TResult 一致。我仍然得到同样的错误。谢谢!

4

1 回答 1

0

您收到该错误是因为ReceiveJson返回 a dynamic,而不是字符串。这允许您将结果作为具有属性的对象使用,而无需声明匹配的类。这对于快速且脏的 JSON 响应很方便,您知道响应的形状不会改变,但是您放弃了编译时类型检查,所以在大多数情况下,我建议创建一个匹配的类并使用RecieveJson<T>.

如果你真的想得到一个字符串,你可以ReceiveString改用。如果您只是将响应转发给其他东西或将其转储到日志或可能有用的东西。但是,如果您需要以某种方式处理我建议使用的 JSON 结果,ReceiveJson或者ReceiveJson<T>您可以将结果作为 C# 对象使用。

于 2018-12-15T15:53:13.650 回答