【问题标题】:how to convert ihttpactionresult return to string如何将 ihttpactionresult 返回到字符串
【发布时间】:2021-11-30 05:07:29
【问题描述】:

我是 C# 新手,正在尝试从 ihttpactionresult 的返回值中获取一个值。

但是我在这方面遇到了困难。这是我的方法:

[HttpPost]
        [Route("GetUserRole")]
        public IHttpActionResult GetUserRole()
        {
            ManageUserData ObjManageUserData = new ManageUserData();
            string UserRole = string.Empty;
            var dt = ObjManageUserData.GetUserRole(UserPersonalNumber);
            if (dt.Rows.Count > 0)
                UserRole = dt.Rows[0][0].ToString();
            else
                UserRole = "User";
            return Ok(UserRole);
        }

在 UserRole 中,我从一个等于 SMPAG 的表中获取值。我正在尝试将此值传递给另一个字符串中的变量,但是我遇到了困难。

另一种方法是:

[HttpPost]
        [Route("GetTableValue")]
        public IHttpActionResult GetTableValue()
        {
            try
            {
                List<UserModel> userModels = new List<UserModel>();

                var UserID = UserAdId;

                var UserRole = GetUserRole().ToString();

                return Ok(UserRole );
                }

我正在尝试将 GetUserRole() 函数中的 SMPAG 值获取到 userRole 中并进行一些操作,但是除了传递的字符串之外,我得到了其他一些值,如何在此变量中获取 SMPAG 的字符串值。你能帮忙吗?

【问题讨论】:

  • 尝试将 GetUserRole() 方法调用的返回值转换为 OkObjectResult。然后您可以通过其 Value 属性访问传递的字符串。
  • 能否给个代码示例
  • var UserRole = GetUserRole() as OkObjectResult;返回 Ok(UserRole.Value);
  • 您的问题还没有解决吗?

标签: c# webapi


【解决方案1】:

我认为您以错误的方式处理此问题。您通常需要将用户角色作为string 值,对吗?但是GetUserRole web 方法返回一个IHttpActionResult。因此,您实际上是在生成一个字符串值,将其包装起来,然后您想再次打开它以使用它。

引入第三种方法GetUserRoleImplementation(或任何对您有意义的名称)将有助于解决此问题:

private string GetUserRoleImplementation()
{
    ManageUserData ObjManageUserData = new ManageUserData();
    string UserRole = string.Empty;
    var dt = ObjManageUserData.GetUserRole(UserPersonalNumber);
    if (dt.Rows.Count > 0)
        UserRole = dt.Rows[0][0].ToString();
    else
        UserRole = "User";
}

您可以看到,我们已将现有 GetUserRole 方法的大部分功能移至此处。这意味着GetUserRole 现在看起来像这样:

[HttpPost]
[Route("GetUserRole")]
public IHttpActionResult GetUserRole()
{
    string userRole = GetUserRoleImplementation();
    return Ok(UserRole);
    // or just: return Ok(GetUserRoleImplementation());
}

因为我们不再需要弄清楚如何从IHttpActionResult 中提取字符串值,所以GetTableValue 现在看起来像这样:

[HttpPost]
[Route("GetTableValue")]
public IHttpActionResult GetTableValue()
{
    try
    {
        List<UserModel> userModels = new List<UserModel>();

        var UserID = UserAdId;

        var UserRole = GetUserRoleImplementation();

        return Ok(UserRole );
    }
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2014-08-19
    • 2019-08-04
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多