1

私は ASP.NET MVC プロジェクトで作業していますが、この特定の状況があります。製品、注文、ユーザーの 3 つのページがあります。そして、これらの各ページには、現在のページに応じて渡される引数だけが異なる同じ ActionResult を呼び出すリンクがあります。次に例を示します。

public ActionResult(string typeOfPage)
{
   if (typeOfPage == "User")
   {
      //do something
   }
   else if (typeOfPage == "Product")
   {
      //do other things
   }
}

私が今やりたいことは、「typeOfPage」の値に応じて DB からすべてのデータを取得することです。そしてもちろん、dbmlでは、すべてのエンティティが typeOfPage 値 (User、Product、Order) と同じ名前になっています。

typeOfPage 値に応じて、ページごとに特定の IQueryable を実行しないようにしています。

この typeOfPage 文字列値を取得し、同じ名前のエンティティを取得し、IQueryable を使用してこのエンティティからすべてのデータを取得する方法はありますか??

どうもありがとう!!!

4

1 に答える 1

2

以下の私のコードを参照してください:

システムを使用する;
System.Data.Linq を使用します。
System.Linq を使用します。

名前空間 MvcApplication1.Models { パブリック クラス リポジトリ : IRepository TModel : クラス、new() { public DataContext dc; 公開文字列 pk { get; 設定; } パブリック リポジトリ (DataContext dc) { this.dc = DC; }

    #region IRepository<TKeyType,TModel> 

    public IQueryable<TModel> getAllEntries()
    {
        return dc.GetTable<TModel>();
    }

    #endregion
}

}

システムを使用する;
System.Data.Linq を使用します。
System.Linq を使用します。


名前空間 MvcApplication1.Models
{
    パブリック クラス リポジトリ : IRepository
        TModel : クラス、new()
    {
        public DataContext dc;
        公開文字列 pk { get; 設定; }
        パブリック リポジトリ (DataContext dc)
        {
            this.dc = DC;
        }

        #region IRepository

        public IQueryable getAllEntries()
        {
            dc.GetTable(); を返します。
        }

        #endregion
    }
}

システムを使用する;
System.Collections.Generic の使用;
System.Linq を使用します。
System.Web の使用;
System.Web.Mvc を使用します。
System.Web.Mvc.Ajax の使用;
MvcApplication1.Models の使用;

名前空間 MvcApplication1.Controllers
{
    public class NorthwindController : コントローラー
    {
        ///
        // GET: /ノースウィンド/
        NorthwindDataContext dc;
        リポジトリ prdRepostory;
        リポジトリ cstrRepostory;
        public NorthwindController()
        {
            this.dc = new NorthwindDataContext();
            prdRepostory = 新しいリポジトリ (dc);
            cstrRepostory = 新しいリポジトリ (dc);
        }

        public ActionResult Index(string typeOfString)
        {
            if (typeOfString == "製品")
            {
                return RedirectToAction("getProducts");
            }
            else if (typeOfString == "顧客")
            {
                return RedirectToAction("getCustomers");
            }
            それ以外の場合は、View() を返します。
        }

        public ActionResult getProducts()
        {
            ビューを返します (prdRepostory.getAllEntries());
        }
        public ActionResult getCustomers()
        {
            ビューを返します (cstrRepostory.getAllEntries());
        }
    }
}

詳細については、まさに必要なものであるcodeplex プロジェクトMVCCRUDを参照してください。幸運を !

于 2009-10-28T16:05:32.020 に答える