3

NerdDinner のチュートリアルを終えて、今はプロジェクトで少し遊んでいます。インデックス ページには、すべての今後のディナーが表示されます。

    public ActionResult Index()
    {
        var dinners = dinnerRepository.FindUpComingDinners().ToList();
        return View(dinners);
    }

DinnerRepository クラスにはメソッドがFindAllDinnersあり、上記のすべてのディナーの Index メソッド番号に次のようなものを追加したいと思います。

    public ActionResult Index()
    {
        var dinners = dinnerRepository.FindUpComingDinners().ToList();
        var numberOfAllDinners = dinnerRepository.FindAllDinners().Count();
        return View(dinners, numberOfAllDinners);
    }

もちろん、これはうまくいきません。私はOOPにかなり慣れていないので、これについて助けが必要です。

ありがとう、
イル

4

5 に答える 5

10

ビュー モデルを作成します。

public class DinnerViewModel
{
    public List<Dinner> Dinners { get; set; }
    public int NumberOfAllDinners { get; set; }
}

public ActionResult Index()
{
    var dinners = dinnerRepository.FindUpComingDinners().ToList();
    var numberOfAllDinners = dinnerRepository.FindAllDinners().Count();
    return View(new DinnerViewModel { Dinners = dinners, NumberOfAllDinners = numberOfAllDinners } );
}
于 2010-03-20T21:35:31.047 に答える
3

パブリック プロパティとして渡したいオブジェクトを含む「ラッパー」オブジェクトを作成する必要があります。たとえば、DinnerViewModel というオブジェクトを作成し、それに 2 つのプロパティを与えて、これらに 2 つのプロパティ (Dinners という List と DinnerCount という int) を設定します。Model.Dinners次に、DinnerViewModel をビューに渡すと、アクセスしてアクセスできるようになります。Model.DinnerCount

于 2010-03-20T21:35:38.667 に答える
1

あなたの場合、LukLed が言及した解決策をお勧めします。

一般に、 ViewDataを使用してコントローラーからビューに複数の値を転送することもできます。

ViewData["dinners"] = dinners;
ViewData["numberOfAllDinners"] = 150;
...

詳細については、こちらのリンクもご覧ください。

于 2010-03-20T21:57:53.837 に答える
0

.aspxファイルでViewData継承を使用することから始め、returnステートメントで同じものを返すことを忘れないでください。そのため、ASP.NETファイルの上部にあるInherits属性の問題であると考えています。ただし、[今後のディナー]ページ(Details.aspxおよび今日の日付以降のすべてのディナーを取得するLINQファイルから生成)を表示しているときに新しいディナーを作成または編集しようとするとエラーが発生する場合は、 'Controllers'ディレクトリ、具体的にはDinnerController.csに追加します。次に、EditメソッドまたはCreateメソッドを確認します。答えはここにあります。これらのメソッドにブレークポイントを設定すると、それを理解できるはずです。そうでない場合は、読み続けてください。

失敗した場所、「return...」行を見てください。たぶん私だけがこれを変更するのを忘れたのですが、私のエラーは人々がこのページに表示されているのと同じであり、これは私がそれを修正した方法です.....作成と編集の「return(dinner)」行(および問題が発生しているその他の問題)、NerDinner.Model.Dinner/ViewDataメソッドを使用しています。ただし、代わりにViewModel returnメソッドに変更すると、修正されるはずです。たとえば、'return(new DinnerFormViewModel(dinner));'の場合、機能するはずです。それが私の問題だったので、これが役立つことを願っています。単純な見落とし。

于 2010-07-17T17:00:17.633 に答える
0

代わりに単に dinners.Count プロパティを使用してください。

于 2010-03-20T21:52:26.150 に答える