您好我需要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,返回关键字后面不能跟一个对象表达式
答案 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语句中的值。