在c#中使用switch语句时遇到问题

时间:2015-09-08 01:44:01

标签: c# asp.net-identity

您好我需要c#中的switch语句帮助。我显示了一个取决于userRole的元素。 我得到userRole很好,因为我使用另一个页面中的代码(角色) 我没有将角色传递给switch语句。

    protected void Page_Load()
    {
        string userRole = string.Empty;
        try
        {
            // Get current logged in usename
            string username = User.Identity.Name;
            if (string.IsNullOrEmpty(username))
            {
                userRole = "isanonymus";
            }
            else
            {
                Compras entity = new Compras();
                AspNetUser user = entity.AspNetUsers.Where(u => u.UserName.Equals(username)).FirstOrDefault();
                // get role of current logged in user
                userRole = user.AspNetRoles.First().Name.ToLower();
            }
        }
        catch
        {
            userRole = string.Empty;
        }
        if (!IsPostBack)
        {
            ToWhom(userRole);
        }

    }
    private void ToWhom(string userRole)
    {
        switch (userRole)
        {
            case "employee":
                return EmployeeView.Visible = true;
            case "supplier":
                return SupplierView.Visible = true;
            default:
                return GenericView.Visible = true;
        }
    }

这是我得到的错误: 错误CS0127因为' Manage.ToWhom(string)'返回void,返回关键字后面不能跟一个对象表达式

4 个答案:

答案 0 :(得分:3)

目前您正在尝试返回一个值,这将是一个bool。您需要使用以下方法从switch case语句中断。 你需要改变它。

private void ToWhom(string userRole)
{
    switch (userRole)
    {
        case "employee":
            return EmployeeView.Visible = true;
        case "supplier":
            return SupplierView.Visible = true;
        default:
            return GenericView.Visible = true;
    }
}

对此。

private void ToWhom(string userRole)
{
    switch (userRole)
    {
        case "employee":
            EmployeeView.Visible = true;
            break;
        case "supplier":
           SupplierView.Visible = true;
            break;
        default:
            GenericView.Visible = true;
            break;
    }
}

答案 1 :(得分:2)

代码中有两处更改。首先是返回类型不会为void,因为您返回bool类型返回。其次,你需要为每个案件提供休息

private bool ToWhom(string userRole)
{
    switch (userRole)
    {
        case "employee":
            return EmployeeView.Visible = true;
            break;
        case "supplier":
            return SupplierView.Visible = true;
            break;
        default:
            return GenericView.Visible = true;
            break;
    }
}

如果您希望该功能为void,请删除return关键字。

答案 2 :(得分:1)

将您的功能更改为:

 private void ToWhom(string userRole)
    {
        switch (userRole)
        {
            case "employee":
                 EmployeeView.Visible = true;
                 break;
            case "supplier":
                SupplierView.Visible = true;
                break;
            default:
                GenericView.Visible = true;
                break;
        }
}

答案 3 :(得分:0)

您已将函数设置为不使用void关键字返回值,因此编译器会返回值,因为您确实返回了值。

您可以将函数从void更改为适当的类型并返回值或通过引用传递参数并将其设置为switch语句中的值。