1

私は読んで読んでいますが、これをまったく機能させることができないようです。私はasp.netMVCに非常に慣れていません-私が読んだすべてのチュートリアルの後、私はついにこれほど多くのことを成し遂げました。

public class EventsController : Controller
{
    private EventsDBDataContext db = new EventsDBDataContext();
    public ActionResult Index()
    {
        var a = (from x in db.tblEvents
                 where x.StartDate >= DateTime.Now
                 select x).Take(20).ToList();
        return View(a);
    }
}

これにより、20行が正常に検出されます(想定どおり)。これらをビューに表示するにはどうすればよいですか?強く型付けされたビューである必要がありますか?あるべきではないようです...両方を試しました。ビュー全体を入力してみましたが、今のところtblEvents、ビューに表示されるプロパティを1つだけ取得すると便利です。これは機能していません。私は多くのバリエーションを試しました。

@{foreach( var item in Model){

      @Html.DisplayFor( item.ID)

  }
}

ビューに表示されているコントローラーから結果を取得するにはどうすればよいですか?今のところは良いです-私IDはそこから行くことができます。

4

3 に答える 3

1

問題は、ビューがモデルのタイプを認識していないことです。@model構文を使用して、モデルのタイプを定義します。

@model List<YourEventClass>

@foreach( var item in Model )
{
   @item.ID<br />
}

詳細については、ここを参照してください

于 2012-12-02T00:56:35.367 に答える
0

私はあなたがこのようなことをすることはできないと思います:

@{foreach( var item in Model){
   @Html.DisplayFor(modelItem => item.ID)
 }

ビューがどのタイプモデルが返されるかを知らない限り(.Netがそれを自分で理解できないのは奇妙に思えます。そこで問題を修正し、これをビューに追加することでIDを正しく表示しました。

@model IEnumerable<GetEvents.Models.tblEvent>

これは、この例では正常に機能します。1つのテーブルを返すため、Modelタイプはテーブルのクラスにすぎません。しかし、これは正しくないようです-テーブルをクエリして結合したい場合、モデルタイプはどうなりますか?これを追加すると私の問題は修正されましたが、誰かがこれに対してより良い答えを持っているなら、私はそれを受け入れます。

于 2012-12-02T00:43:38.300 に答える
0

Webプロジェクトのルートから、。というディレクトリが必要Viewsです。ビューフォルダ内に、という名前の新しいフォルダを作成しますEventsEventsフォルダに、という名前のかみそりビューを作成しますIndex。マークアップとテンプレートコードをこのファイルに入れます。

正解です。ビューを強く入力する必要はありません。別のコンパイル時チェックが提供されるため、そうすることをお勧めしますが、必須ではありません。

アプリケーションを実行すると、ルート(通常はホーム/インデックス)からイベント/インデックスに移動します。ビューにレンダリングされた20個のアイテムのリストが表示されます。

于 2012-12-02T00:27:51.560 に答える