2009-09-10 24 views
8

Denetleyiciden ASP.NET MVC çerçevesindeki görünüme geçmek için kolay bir yol bulmak için burada kendimle mücadele ediyorum. ASP.NET MVC - Bir Diziyi görünüme nasıl geçirirsiniz?

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

yüzden bence ben ViewData [ "passedArray"] için sadece bir çağrı olurdu ve üzerinde bir döngü çalıştırın:

yüzden benim denetleyicisi gibi bir şey olurdu.

Ama görünüşe ViewDatamuhtemelen Dizi DataType üzerinde beyanının, System.String olarak görünümü tarafından alınıyor, ama ne yazık ki milyonlarca oluşturmak olmadan düzgün ve basit geçmek nasıl bilmiyorum kod satırlarının

Bana yardım ederse harika olurdu. [] Dizeye görünümü içinde ViewData [ "passedArray"] döküm tarafından önceden

cevap

12

Sen görünümünde döküm gerekir

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

Bu agileguy için teşekkürler, gerçekten çok çeviksin! Tam olarak ne istedim. Şerefe – zanona

8

Bu çalışması gerekir içinde

teşekkürler. Alternatif olarak, ekstra mile gitmek isterseniz: bu diziyi üye olarak içeren bir ViewModel sınıfı oluşturun ve ViewModel'i görünümünüzün güçlü yazılan bir sürümüne iletin.

+0

Çok teşekkürler David Ben mükemmeldir, döküm kullandı. Ama değişkenleri yönetmek için belirli bir viewmodel oluşturma fikrini seviyorum. Kendimi daha iyi bilgilendirmeye çalışacağım. Tekrar teşekkürler. – zanona

+0

ViewModel'i seçmek için birkaç iyi neden var. (1) Döküm ihtiyacı kapıyı çalışma zamanı hatalarına açar. (2) Bir ViewModel oluşturmak, gelecekte görünümün türünü değiştirmek zorunda kalmadan ihtiyaç duyduğunuz özellikleri eklemeniz için size esneklik sağlar. (3) Kodunuz, görünümünüzde ViewData ["key"] kodu bulunmadan biraz daha okunabilir. –

+0

David, yani bir MyCustomViewModel gibi kontrolör için yeni bir sınıf oluşturursam ve bu sınıfı var myCustomOne = new MyCustomViewModel(); myCustomOne.myArray = new int [] {1,2,3,4} İade görünümü (myCustomOne); Bu diziye şu şekilde erişebilirim: Model.myArray int [] olarak doğru mu? – zanona

0

Böyle PartialView kullanabilirsiniz:

  • Kontrolör

    public ActionResult Index() 
        { 
         List<string> arr = new List<string>() { "apple", "banana", "cat" }; 
         return View(arr); 
        } 
    
  • Görünüm

Dediğin gibi
@model List<string> 
@foreach (var item in Model) { 
     @Html.Partial("~/Views/Shared/Fruits/_myFruits.cshtml", item); 
} 
  • PatialView yani _myFruits.cshtml
@model string 
<li>@Model</li>