2015-09-08 129 views
2

你好,我需要幫助,在c#中的switch語句。我正在顯示一個取決於userRole的元素。 我得到userRole罰款,因爲我在另一個頁面(角色)使用代碼 位我無法將角色傳遞給switch語句。c#中的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(串)」返回void,返回關鍵字一定不能跟一個對象表達式

+0

使用break不返回。 – deathismyfriend

回答

3

當前你正在嘗試返回一個值,這將是一個布爾值。您需要使用下面的方法從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; 
    } 
} 
+0

您的默認情況無效。 – StillLearnin

+0

@StillLearnin謝謝我將斷點複製到錯誤的位置。 – deathismyfriend

+0

我很確定你不能從無效方法返回。 –

0

您已將此功能設置爲不使用void關鍵字返回值,因此編譯器會提供一個錯誤,因爲您返回值。

您可以將函數從void更改爲適當的類型,並返回值或通過引用傳遞參數,並將其設置爲switch語句中的值。

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; 
     } 
} 
2

裏有兩個代碼的變化。首先是返回類型不會因爲你返回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關鍵字。