3

Web アプリ、MVC、LinqToSql は初めてです。NerdDinner チュートリアルをガイドとして使用して、MVC Web アプリを作成しました。現在、多対多の関係を追加しています。そして、一歩ごとに壁にぶつかっています。Edit ビューと Create ビューに複数選択リストがあります。詳細ビューとリスト ビューでは、選択した値を一覧表示したいと思います。

Company、Subcontract、およびリンク テーブル CompanyToSubcontract の 3 つのテーブルがあります。コードの他の場所で使用されている CompanyToSubcontract テーブルから、選択した会社の GUID を取得するコードがあります。表示方法がわかりません。

Company テーブルから会社名を取得する別の関数を作成する必要がありますか? 名前のリストを SubcontractDetail ビューに渡してから、何らかの方法でそこでループしますか?

SubcontractIndex ビューと同じ質問です。インデックス ビューはテーブル形式です。下請け行ごとにカンマで区切られた会社のリストを含む「会社」列が必要です。

[Authorize]
        public ActionResult Details(string id)
        {
           subcontract subcontract = subcontractRepository.GetSubcontract(id);

           IEnumerable<Guid> cmpny = subcontractRepository.GetSubcontractCompanies(subcontract.subcontract_id);

           if (subcontract == null)
               return View("NotFound");
           else
           {
               return View("Details", subcontract);
           }
        }

[Authorize]
    public ActionResult Index()
    {
        var subcontracts = subcontractRepository.FindAllSubcontracts().ToList();
        return View("Index", subcontracts);
    }
4

1 に答える 1

3

いくつかのオプションがあります:
1) サブコントラクトと IEnumerable を含む新しいクラスを作成し、新しいクラスのオブジェクトをビューに渡すことができます。これは、ASP.NET MVC の一般的な方法です。

public class MyCustomModelView
{
    public IEnumerable<Guid> Company{ get; set; }
    public subcontract Subcontract { get; set; }
}

そしてコントローラーで:

return View("Details", new MyCustomModelView(){
    Company = cmpny, 
    Subcontract = subcontract });

そして、この新しいタイプを追加して、ビューのタイプにする必要があります。

enter code here

2) また、IEnumerable を次のように ViewData コレクションに追加することもできます。

ViewData["Company"] = cmpny;

そして、ビューのインデクサーでアクセスします

<% foreach(Guid id in (ViewData["Company"] as IEnumerable<Guid>)) {  %>
...Display names...
<% } %>

キャストする必要がなく、きれいなので、私は個人的にもみをお勧めします

于 2010-02-02T08:10:24.657 に答える