2009-09-10 77 views
8

コントローラからASP.NET MVCフレームワークのビューに配列を渡す簡単な方法を見つけるためにここで自分自身を苦労しています。そう私の見解で、私はのViewData [「passedArray」]にだけ電話を持っており、それにループを実行しますASP.NET MVC - ビューに配列を渡す方法は?

public class HomeController : ApplicationController 
{ 
    public ActionResult Index() 
    { 
     string[] myArray = { "value01", "value02", "value03"}; 
     ViewData["passedArray"] = myArray; 
     return View(); 
    } 
} 

ので、私のコントローラで私のようなものを持っているでしょう。

しかし、どうやらのViewDataはおそらく配列データ型の宣言で、可能System.Stringとしてビューによって受信されているが、残念ながら私は何百万人を作成することなく、適切かつ単純にそれを渡す方法がわかりませんコード行の

私が助けてくれれば幸いです。これは、[]の文字列にビュー内のViewData [ "passedArrayを"]キャストすることによって動作するはず事前

答えて

12

あなたはこのようPartialViewを使用することができますビューで

<% var myArray = (string[])ViewData["passedArray"]; %> 
+0

あなたは本当に非常に機敏ですagileguyありがとう! まさに私が望むもの。乾杯 – zanona

8

感謝。または、この配列をメンバーとして含むViewModelクラスを作成し、そのViewModelを厳密に型指定されたビューのバージョンに渡します。

+0

おかげでたくさんダビデは私はそれが完璧だ、キャストを使用しました。 しかし、変数を管理するための特定のビューモデルを作成するというアイデアが気に入っています。 もう一度ありがとうございます。 – zanona

+0

ViewModelを選ぶ理由はかなりあります。 (1)キャストの必要性により、ランタイムエラーが発生します。 (2)ViewModelを作成すると、将来、ビューのタイプを変更することなく、必要に応じてフィーチャを追加することができます。 (3)あなたのコードは、ViewData ["key"]コードがあなたのビューに散在していないと、やや読みやすくなります。 –

+0

David、MyCustomViewModelのようなコントローラー用の新しいクラスを作成し、このクラスを渡すとどういう意味ですか? var myCustomOne = new MyCustomViewModel(); myCustomOne.myArray =新しいint [] {1,2,3,4} 戻るビュー(myCustomOne); 私のビューでその配列にアクセスすることができます: Model.myArray int [] はそうですか? – zanona

0

をキャストする必要があります。

  • コントローラ

    public ActionResult Index() 
        { 
         List<string> arr = new List<string>() { "apple", "banana", "cat" }; 
         return View(arr); 
        } 
    
  • ビュー

あなたが言ったように3210
@model List<string> 
@foreach (var item in Model) { 
     @Html.Partial("~/Views/Shared/Fruits/_myFruits.cshtml", item); 
} 
  • PatialViewすなわち_myFruits.cshtmlが
@model string 
<li>@Model</li> 
関連する問題