1

コントローラーを使用してデータを挿入していますが、

SignUpcontroller.cs

[HttpPost]
public ActionResult Index(SignUpModel sm)
{

using(DataClassesDataContext dc= new DataClassesDataContext())
{
Dummytable dm= new Dummytable();
{
dm.Name=sm.password;
}
//then conncetion string and submit
}
}

とリダイレクト

私の質問は、このコードをコントローラーモジュールに書くのは正しいですか、それともモデルモジュールに書く必要があるのですか、モデルモジュールに書く必要がある場合は、セッターを定義する方法を教えてください

4

4 に答える 4

3

すべてのデータ アクセス コードをデータ アクセス レイヤーに移動することをお勧めします。したがって、このコードを別のクラスに配置して、コントローラーから参照して呼び出すことができます。たとえば、さまざまな操作を定義するインターフェイスを定義できます。

public interface IRepository
{
    void Insert(SignUpModel model);
}

次に、使用しているデータ アクセス テクノロジ (EF など) で動作する特定の実装を用意します。

public class RepositoryEF : IRepository
{
    public void Insert(SignUpModel model)
    {
        using(DataClassesDataContext dc= new DataClassesDataContext())
        {
            Dummytable dm = new Dummytable();
            dm.Name = sm.password;
        }
    }
}

次のステップは、コントローラーにこのリポジトリをコンストラクターの依存関係として使用させることです。

public class SomeController : Controller
{
    private readonly IRepository repo;
    public SomeController(IRepository repo)
    {
        this.repo = repo;
    }

    [HttpPost]
    public ActionResult Index(SignUpModel sm)
    {
        this.repo.Insert(sm);

        ...
    }
}

あとは、いくつかの DI フレームワークを選択し、依存関係を結び付けるだけです。

このようにして、コントローラー ロジックとデータ アクセス レイヤーを明確に分離できます。これにより、アプリケーションのさまざまなレイヤーを個別に単体テストできます。

于 2013-08-21T16:01:33.350 に答える
0

最初の質問は、あなたはどこ DataAccessLayerですか?

したがって、データベース値の読み取りおよび書き込み用に別のクラスにコードを記述することをお勧めします。

ロジックcontroller専用_UI

Interface再利用性の向上と単体テストのために 使用できます。

ここに画像の説明を入力

于 2013-08-21T16:14:55.410 に答える
0

実装が機能するために、コントローラーからのキャストを使用して、クラスのメモリをインターフェースに渡します

[HttpPost]
public ActionResult Index(SignUpModel sm)
{
ISignUpModel ISign= (ISignUpModel)this.sm;
ISign.Insert(sm);
}

皆さんのおかげで、私はこれを学びました:)

SignUpModel.cs では、通常の「Insert メソッドを使用した ISignUp という名前のインターフェイス」の実装です。

于 2013-08-21T17:49:58.447 に答える