3

私は実際にこのサイトを見て、ググって、数日間、さまざまなことを試しましたが、答えが見つかりません.

そのため、購入後にクライアント情報を表示する Web アプリケーションを作成しようとしています。私は VS2012 Express と C# を使用していますが、MVC4 を使用することにしました。これは主に、ASP.NET に関するチュートリアルが、私が探していたものにかなり近いものだったためです。私の選択に関するコメントは要求されませんが、歓迎されないわけでもありません。

そのため、管理者は毎日の終わりにすべての販売情報を入力します。私たちは顧客の電話番号をセールス プロトコルのアカウント番号として記録しているので、単純にするために、顧客の電話番号を Web アプリケーションへのログインとしても使用することにしました。また、そのようにして、クライアントがサイトにログインしてデータベースを表示すると、データベースは自動的にフィルタリングされ、特定のクライアントがトランザクションのみを表示できるようになります.

私が従ったチュートリアルはこちらです。

これがフィルターを適用する必要があるポイントであることがわかりましたが、そうするのに多くの問題があります。コントローラーの名前は「MainController」 データベースの名前は「Main」、テーブルは「Mains」 「AccountNumber」は現在のユーザー ID と一致する必要があるデータベース内のフィールドです

public ActionResult Index()
{
    return View(db.Mains.ToList());
}

私が理解しているように、[InitializeSimpleMembership] を上に配置し、UserId を取得して、それをフィルターとして定義する必要があります。

4

1 に答える 1

1

まず、次のいずれかの方法を決定する必要があります。

1) ログイン情報とユーザー情報を別のテーブルに保持し、SimpleMembership(SM) にデフォルトのジョブを実行させます。

2) 既存のテーブルを使用して、ユーザー情報を保存し、SM にどのテーブル用かを伝えます。

アプローチ 1:

このアプローチを処理するために必要なのは、ユーザーを手動で作成し (私が思うように)、顧客の作成を担当するアクション メソッドに追加の行を追加することだけです。

[HttpPost]        
public ActionResult Create(Customer model)
{
    if (ModelState.IsValid)
    {            
        db.Customers.Add(model);
        try
        {
            db.SaveChanges();

            // here it is ...
            WebSecurity.CreateUserAndAccount(model.Phone, model.Password);
        }
        catch 
        {
            insertError = true;
        }
        // .. Other codes ...
} 

これで、顧客は自分の電話番号でサイトにログインするだけで済みます。ユーザー名とそのパスワードとして。

また、現在サイトにログインしている特定のユーザーに関連するアイテムを取得するには、次のクエリを使用します。

public ActionResult Index()
{
    return View(db.Mains.Where(m => m.AccountNumber == User.Identity.Name)
        .ToList());
}

アプローチ2も必要な場合は、回答を更新してここに置くように言ってください

于 2013-08-14T07:11:02.367 に答える