0

この質問にはおそらく本当に基本的な答えがありますが、私はエンティティと MVC に不慣れで、基本に慣れています。

サーバーのドロップダウンを使用して、メインテーブル Sites の MVC コントローラーを自動的に生成しようとしています。次のようなモデルが必要なようです。

   public class Sites
    {
    public TTSites TTSites { get; set; }
    public List<servers> server { get; set; }

    public Sites()
    {
        server = new List<servers>();
    }
   }

これはクラス TTSites とサーバーの両方を文字列サーバーで使用していますが、これをモデル クラスとして設定し、エンティティ データベースをデータ コンテキストとして設定すると、キーを定義する必要があると表示されます。モデルの代わりに基本クラスを使用する必要がありますか? モデルまたは基本クラスで何かを設定する必要がありますか?

4

1 に答える 1

0

いくつかの用語が混乱しているようです。コントローラ クラスでコントローラ アクションをコーディングすると、ルーティング エンジンが URL に基づいて呼び出すコントローラ アクションを決定します。たとえば、デフォルトのアクションを持つHomeControllerクラスがある場合、次のようになります。Index

public ActionResult Index()
{
    // code here
}

これは、次のような URL でサイトにアクセスした場合、デフォルトのルーティングで呼び出されます (たとえば、次のwww.mysite.comURL でサイトにアクセスできるとします:

http://www.mysite.com/Home

これによりIndex、コントローラーでアクションを実行できます。

通常、ビュー モデルを使用して UI 側で使用し、エンティティからビュー自体に必要なデータを入力します。TTSiteとのような 2 つのエンティティがある場合、(非常に単純な) 例として、次のようServerにビュー モデルを設定します。Sites

public ActionResult Index()
{
    var servers = yourDbContext.Servers.ToList();
    var ttSite = yourDbContext.TTSites.GetByID(1); // retrieve one entity by its ID value, this would be acquired dynamically based on some sort of user input rather than hard-coded
    var viewModel = new Sites(servers);
    viewModel.TTSite = ttSite;

    return View(viewModel);
}

ドロップダウンの作成に関するものは何も含めていません。データをビュー モデルに取得し、そのビュー モデルでビューを作成する方法を示しているだけです。

Sitesクラスをエンティティとしてではなくビュー モデルとして使用し、データベースのエンティティに基づいてそのデータを設定することに注意してください。ビュー モデル クラスに主キーを設定することはありません。TTSiteこれらはデータ モデルの問題であり、データ レイヤーで使用可能な方法でこれらのエンティティ ( など) を既に設定していると思われます。

コントローラー アクションとビューが動作するようになったら、ビュー モデル データをドロップダウン リストで使用できる形式に変換し、そこから先に進むことができます。

于 2013-06-16T02:02:24.180 に答える