Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 识别结果到操作结果_Asp.net Core - Fatal编程技术网

Asp.net core 识别结果到操作结果

Asp.net core 识别结果到操作结果,asp.net-core,Asp.net Core,考虑到错误,是否有一种简单的方法可以将IdentityResult转换为IActionResult?IdentityResult只是一个类,它告诉您是否有ASP.NET(核心)标识操作是否成功,如果出现错误,则会向您提供错误消息,并且与实现IActionResult接口的MVC操作结果无关 如果您使用WebApi/RestApi控制器,您会将其转换为 public IActionResult SomeActionName() { IdentityResult结果=…;//某些标识操作 //一切正

考虑到错误,是否有一种简单的方法可以将
IdentityResult
转换为
IActionResult

IdentityResult
只是一个类,它告诉您是否有ASP.NET(核心)标识操作是否成功,如果出现错误,则会向您提供错误消息,并且与实现
IActionResult
接口的MVC操作结果无关

如果您使用WebApi/RestApi控制器,您会将其转换为

public IActionResult SomeActionName()
{
IdentityResult结果=…;//某些标识操作
//一切正常,返回http代码200
如果(结果、成功)
返回Ok();
//发生错误,将http代码400+错误作为json返回
返回错误请求(result.Errors);
}
或者,如果您非常懒,请编写自己的
IActionResult

public class IdentityActionResult:IActionResult
{
私有只读标识Result IdentityResult;
公共标识操作结果(IdentityResult IdentityResult)
{
this.identityResult=identityResult;
}
公共任务ExecuteSultAsync(ActionContext上下文)
{
IActionResult actionResult=null;
if(identityResult.Success)
{
actionResult=新的OkResult();
}
其他的
{
actionResult=新的BadRequestObjectResult(identityResult.Errors);
}
返回actionResult.Execute(上下文);
}
}

当然,这可以进一步优化,这样您就不必为每个请求创建两个
IActionResult
对象,但这是一个留给您的练习;)

IdentityResult
只是一个类,它告诉您ASP.NET(核心)标识操作是否成功,如果出现错误,它会向您提供错误消息,并且与实现
IActionResult
接口的MVC操作的结果无关

如果您使用WebApi/RestApi控制器,您会将其转换为

public IActionResult SomeActionName()
{
IdentityResult结果=…;//某些标识操作
//一切正常,返回http代码200
如果(结果、成功)
返回Ok();
//发生错误,将http代码400+错误作为json返回
返回错误请求(result.Errors);
}
或者,如果您非常懒,请编写自己的
IActionResult

public class IdentityActionResult:IActionResult
{
私有只读标识Result IdentityResult;
公共标识操作结果(IdentityResult IdentityResult)
{
this.identityResult=identityResult;
}
公共任务ExecuteSultAsync(ActionContext上下文)
{
IActionResult actionResult=null;
if(identityResult.Success)
{
actionResult=新的OkResult();
}
其他的
{
actionResult=新的BadRequestObjectResult(identityResult.Errors);
}
返回actionResult.Execute(上下文);
}
}

当然,这可以进一步优化,这样您就不必为每个请求创建两个
IActionResult
对象,但这是一个留给您的练习;)

您可以为
IdentityResult
编写一个扩展方法,该方法返回如下ObjectResult:

public static class IdentityResultExtension
{
    public static ObjectResult ToObjectResult(this IdentityResult result)
    {
        // 
        return new ObjectResult(result);
    }
}
然后在行动中使用它:

public IActionResult YourAction() 
{
    IdentityResult result;
    return result.ToObjectResult();
}

您可以为
IdentityResult
编写一个扩展方法,该方法返回如下ObjectResult:

public static class IdentityResultExtension
{
    public static ObjectResult ToObjectResult(this IdentityResult result)
    {
        // 
        return new ObjectResult(result);
    }
}
然后在行动中使用它:

public IActionResult YourAction() 
{
    IdentityResult result;
    return result.ToObjectResult();
}

它们是完全不相关的概念,仅仅因为它们都有结果这个词并不意味着它们可以从一个转换到另一个。它们是完全不相关的概念,仅仅因为它们都有结果这个词并不意味着它们可以从一个转换到另一个