2009-10-30 57 views
1

我種的新ASP.NET MVC,所以需要你們的幫助讓我過了一個問題:如何根據ASP.NET MVC中登錄的用戶角色創建不同的視圖?

在我的應用程序登錄將使用用戶的角色來完成。我有我的自定義數據庫模式(如用戶,角色,UserInRole等),我使用我的自定義MembershipProvider和RoleProvider來實現登錄。

順便說一句我正在使用MVC默認帳戶控制器本身進行了一些修改。我現在想要實現的是,根據登錄用戶的角色,我想爲用戶創建不同的視圖。

我可以以任何方式使用LogOn操作方法的returnUrl參數嗎? (默認情況下,此參數設置爲空)。如果是的話,我怎樣才能構建併發送returnUrl取決於角色? 或者有沒有更簡單的方法來實現這一點?

回答

0

你決定在行動使用什麼視圖(渲染) - 它不是直接由URL

在您有權訪問用戶對象,並從可確定角色的用戶是在代碼決定 - 從它應該是直截了當的選擇相應的看法。

1

默認情況下,在返回ActionResult的控制器方法中,如果您只返回「View()」,那麼將顯示的頁面就是您的Views目錄中的頁面,其中包含控制器方法的名稱。但是,您可以指定將返回的View的名稱,或將該調用傳遞給另一個控制器方法以返回相應的視圖。

如下面的人爲的例子:

public ActionResult Edit(string id) 
    { 
    // get the object we want to edit 
     IObjectDefinition definedObject = _objectManager.GetObjectById(id); 
     if (definedObject != null) 
     { 
      ViewData.Add("definition", definedObject);// add to view data collection so can display on page 

      IUser user = GetCurrentUser();// get from session/cookie/whatever 
      if (!user.IsAccountAdmin) 
    { 
       return View("Detail");// a readonly page as has no rights to edit 
    } 
    else 
    { 
     return View();// same object displayed in editable mode in another view 
    } 
     } 
     else 
     { 
      return New();// call to controller method below to allow user to create new record 
     } 
    } 


    public ActionResult New() 
    { 
     return View(); 
    } 
0

我覺得你可以做成功登錄一個RedirectToAction因爲你現在有一個有效的登錄用戶,在操作方法可以使用的的IsInRole屬性LoggedIn用戶並呈現適當的局部視圖。

相關問題