2017-06-01 96 views
0

在我的控制器中,我有一個函數來獲取屬於某個用戶的角色。 此函數使用.GetRolesAsync()並返回一個IList。 在瀏覽器中,用戶可以提交名稱,並查看用戶的角色。 然而這返回我的列表在一個空白頁。 example返回列表打開一個包含請求值的空白頁

Controller :  
[HttpPost] 
    public async Task<IList<string>> GetRoles(UserRoleViewModel model) 
    { 
     ApplicationUser user = await _userManager.FindByEmailAsync(model.Email); 
     if(user != null) 
     { 
      model.GetRoles = await _userManager.GetRolesAsync(user); 
     } 
     return model.GetRoles; 
    } 

我怎麼能這個列表回到我的視圖模型,而無需打開一個空白頁,所以我可以從我的觀點稱此?

ViewModel : 
public class UserRoleViewModel 
{ 
    public List<SelectListItem> Roles { get; set; } 
    public IList<string> GetRoles { get; set; } 
    public string Role { get; set;} 
    public string Email { get; set; } 
    public string CurrentPassword { get; set; } 
    public string NewPassword { get; set; } 
} 
+0

要返回查看或將角色分配給視圖模型? – User3250

+0

返回到相同的視圖並顯示角色。 – jordvand9

+0

請在下面查看我的答案。或者你可以在你的視圖模型中創建一個List 屬性,並在控制器中設置並返回它。 – User3250

回答

0

按我的知識,你所得到的空白頁,因爲,當下面的方法得到執行,

現有代碼:

[HttpPost] 
    public async Task<IList<string>> GetRoles(UserRoleViewModel model) 
    { 
     ApplicationUser user = await _userManager.FindByEmailAsync(model.Email); 
     if(user != null) 
     { 
      model.GetRoles = await _userManager.GetRolesAsync(user); 
     } 
     return model.GetRoles; 
    } 

它僅返回結果列表和不返回任何行動結果保留在相同的視圖

解決方案:

使該方法的返回類型像下面

替換代碼:

[HttpPost] 
    public async Task<ActionResult> GetRoles(UserRoleViewModel model) 
    { 
     ApplicationUser user = await _userManager.FindByEmailAsync(model.Email); 
     if(user != null) 
     { 
      model.GetRoles = await _userManager.GetRolesAsync(user); 
     } 
     return view("viewname") 
     //Note: here viewname can be the same view ,where this post method was 
     // called if you dont want to create new view 
    } 

,並指定其中你叫這個帖子方法視圖名稱,如果你不希望創建一個新的視圖。

因此,當它被調用時,它不會給用戶一個空白頁面。

希望以上資料是有用的,請讓我知道你的想法或反饋

感謝

KARTHIK

+0

我已經在評論中提到過它。 – User3250