繁体   English   中英

C# 获取 CreatedAtRoute 的返回 object

[英]C# Get return object of CreatedAtRoute

我有一个 controller 方法,它返回一个 CreatedAtRoute object。 如何提取返回的 object?

我的测试 class (调用控制器):

[Test]
public void AddUser(){
  AppUser au= new AppUser();
  GreenCardController gc = new GreenCardController();
  ActionResult<AppUser> res = gc.UpdateArgosUser(au); //<-- How can I turn this into an AppUser object?
  //var temp=res.Value; //this didnt have the Object
  Assert.AreEqual(res.FirstName,"")
}

Controller 方法:

public ActionResult<AppUser> UpdateArgosUser([FromBody]AppUser au)
{
     return CreatedAtRoute(nameof(GreenCardController.GetArgosUser), new 
                   { userid = au.UserId }, au);
}

当我在调试模式下暂停时res.Result.Value似乎是我正在寻找的,但我得到了错误:

ActionResult 不包含“值”的定义

从返回的ActionResult<AppUser>中提取所需的值,转换为已知类型以访问所需的成员。

由于 controller 调用return CreatedAtRoute(...) ,因此您需要访问ActionResult<TResult>.Result属性以从 controller 获取返回的ActionResult

从那里获得 object 结果中的存储值 object 的问题。

[Test]
public void AddUser(){
    //Arrange
    AppUser expected = new AppUser();
    GreenCardController controller = new GreenCardController();

    //Act
    ActionResult<AppUser> actionResult = controller.UpdateArgosUser(expected);
    CreatedAtRouteResult result = actionResult.Result as CreatedAtRouteResult;
    AppUser actual = result.Value as AppUser;

    //Assert
    Assert.AreEqual(expected, actual);
}

暂无
暂无

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

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