0

オブジェクト(リスト)を次のようなビューに渡します。

private readonly CarsContext _db = new CarsContext();

public ActionResult Index()
{
    ViewBag.Message = "Foobar";

    var result = from cars in _db.CarProfiles
                 where cars.CarOfTheWeek
                 select cars;

    return View(result.ToList());
}

インデックスビュー内からこのオブジェクトにアクセスするにはどうすればよいですか?動的ビューバッグに追加して、引数として渡すのではなく、その方法でアクセスする必要があると考えています。これは正しいですか、または上記のコントローラーコードをそのままにしておくと、ビュー内からこのオブジェクトにアクセスできますか? ?

ありがとう

4

3 に答える 3

1

Index.cshtmlビューでは、最初の行は次のようになります。

@model YOUR_OBJECT_TYPE

したがって、たとえば、行に文字列を渡すと、次のようになります。

return View("hello world");

次に、Index.cshtmlの最初の行は次のようになります。

@model String

あなたの場合、Index.cshtmlの最初の行は次のようになります。

@model List<CarProfile>

このように、Index.cshtmlビューに@Modelと入力すると、CarProfileのリストのすべてのプロパティにアクセスできます。@Model [0]は、リスト内の最初のCarProfileを返します。

ヒントとして、ViewBagはほとんどの場合使用しないでください。代わりに、ViewModelを作成して、ビューに戻す必要があります。ViewModelsについて読みたい場合は、次のリンクを参照してください:http: //msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvc3fundamentals_topic7.aspx

于 2012-11-03T17:59:02.323 に答える
1

アクションメソッドから、戻り先のクラス/タイプに強く型付けされたビューを作成します。

あなたの場合、CarProfileクラスオブジェクトのリストを返します。したがって、ビュー(index.cshtml)で、これを最初の行としてドロップします。

@model List<CarProfile>

CarProfileこれで、キーワードを使用してリストにアクセスできます。Modelたとえば、リスト内のすべてのアイテムをループで表示したい場合は、次のように実行できます。

@model List<CarProfile>
@foreach(var item in CarProfile)
{
  <h2>@item.Name</h2>
}

仮定NameCarProfileクラスのプロパティです。

于 2012-11-03T18:13:02.177 に答える
1

ViewBag(コントローラーを作成した方法)でオブジェクトを渡すことにより、ビュー内のオブジェクトにアクセスできます。しかし、私は通常、ViewModelを用意し、そのViewModelを介してデータをビューに渡す方が良いと思います。ビジネスオブジェクトをモデルに直接渡す(これまでの方法で)。モデルをビジネスオブジェクトに依存させると、ほとんどの場合最適ではなくなります。また、ViewBagを使用する代わりにViewModelを使用すると、StrongTypesを使用できるという利点があります。

    private readonly CarsContext _db = new CarsContext();

    public ActionResult Index()
    {
        var result = from cars in _db.CarProfiles
                     where cars.CarOfTheWeek
                     select cars;

        MyViewModel myViewModel = new MyViewModel( );
        myViewModel.Message = "Foobar";
        myViewModel.ResultList = result.ToList();

        return View( myViewModel );
    }
于 2012-11-03T18:13:37.167 に答える