1

私は現在、プロジェクトの管理者側を構築しています。次のことを行う必要があります。-新しいユーザーを作成し、それらに関するより具体的な情報(場所、位置など)を追加する-さまざまなユーザーをさまざまな役割に割り当てる必要があります。

私が最初にやりたかったのは、既存のユーザーの情報をプルして、データを追加のテーブルの情報と結合し、さまざまな役割でフィルタリングすることでした。

public class UserDetail
{
    [HiddenInput(DisplayValue = false)]
    public string UserId { get; set; }

    public int StoreID { get; set; }

    public string PositionID { get; set; }
}

コントローラーでは、最初にMembershipクラスからのデータを内部結合し、UserIDレベルで上記のUserDetailクラスと内部結合するという簡単なことをしたいと思いました。そこで、次のコードを使用しました

    public ActionResult Index()
    {
        var allSystemUsers = Membership.GetAllUsers().Cast<MembershipUser>()
            .Select(user => new {user.UserName, user.Email, user.CreationDate, user.LastLoginDate });

                    return View();
    }

問題は、最初に特定の役割の人だけを引っ張って、次にすべての人を引っ張ってから、上記のUserDetailクラスと内部結合する方法がわからないことです。

Index ActionaResultを取得したら、作成できるようになることを願っています-作成および編集機能

4

2 に答える 2

0

特定のロールのユーザーを取得するには、ロール プロバイダーを使用します。

List<string> users = Roles.GetUsersInRole("someRole");

これにより、指定された役割に割り当てられたすべてのユーザーのユーザー名のリストが返されます。次に、リストを反復処理して、users必要な詳細を取得できます。

foreach(var user in users)
{
   //do stuff
} 

UserDetail を保存するための少し簡単な方法 (imho) は、mvc3 フレームワークに含まれている Profile プロバイダーを使用することです。次に、3 つのプロバイダー (メンバーシップ、ロール、およびプロファイル) を使用するように設計されているため、これらを連携して使用します。

于 2012-09-07T19:45:57.317 に答える
0

.Selectも使用できるので、単に使用する必要はありません。を使用して繰り返し可能な順序を設定したり、含めたくないユーザーをフィルターで除外したりすることもできます。.Skip.Take.OrderBy.Where

それは、自分でロールしたい場合です。

今、あなたが本当に自分自身をロールバックしたいのであれば、それはまさにあなたが探しているものではないかもしれません. GitHub からフォークして、必要に応じてプロファイルを使用するように変更できます (または、EF Code First を介して追加情報をユーザーにバインドします。私はそれを行いました)。

https://github.com/TroyGoode/MembershipStarterKit

これは優れた出発点であり、ほとんどのユーザー管理をオフホップで処理します。エリアに配置されるため、サイトの残りの部分への影響は最小限です。

于 2012-09-07T16:55:44.647 に答える