2016-03-31 21 views
0

Web ızgarası görünümünü statik verilerle doldurmaya çalışıyorum ancak hiç şansım yok.MVC 4 WebGrid C# Hata

Hep hatayı alıyorum:

"A data source must be bound before this operation can be performed". 

hata kesme noktaları kurarak nereden geldiğini anlıyoruz. Temel olarak, sayfa yüklendiğinde, kod hiçbir zaman Hesap() işlevine erişmez. Bunu yapmadığı için, AllFiles hiçbir zaman başlatılmaz ve iade edilmez.

Bunu yapmanın en iyi yolu, Görünüm'den Action() öğesini aramak ve tüm dosyaları başlatmak olabilir mi? Aynı hatayla ilgili başka soruları okudum ama kimse kodun denetleyici işlevine erişmediğini vurgulamadı. İşte

@model IEnumerable<GridTest1.Models.FileModel> 
    @{ 
     ViewBag.Title = "Files"; 
     WebGrid grid = new WebGrid(Model); 
    } 
    <h2>People</h2> 
    @grid.GetHtml(columns: new [] { 
     grid.Column("FileID"), 
     grid.Column("UserID") 
    }) 
+1

allFiles.Add (dosya) çalışacak aşağıdaki kodu

public ActionResult Account() { // Assign a value to class FileModel file = new FileModel(); file.FileID = "1"; file.UserID = "1"; file.FileName = "Text.txt"; file.AddedOn = "AddedOn"; // Create instance for all file List<FileModel> allFiles = new List<FileModel>(); // Add file model to list allFiles.Add(file); // Pass the file list to view return View(allFiles); } 

Görünüm

@model List<GridTest1.Models.FileModel> @{ ViewBag.Title = "Files"; WebGrid grid = new WebGrid(Model); } @grid.GetHtml(columns: new[] { grid.Column("FileID"), grid.Column("UserID"), grid.Column("FileName"), grid.Column("AddedOn"), }) 

kontrol edin; ? Kaybettiğin bu hat mı? – ssilas777

+0

Bunu denedim ve kullanmadan denedim. Boş bir liste olsa bile teknik olarak size bir hata vermemelidir. Sorun bu olmamalı. Sorun, Hesap İşlem Sonuçlarının hiçbir zaman iade edilmemesidir. Neden bir fikir yok – user3311987

+0

List yerine IList veya IEnumerable deneyin ... sadece bir tahmin. Listeyi Beğen allFiles bunu IEnumerable allFiles – Nikki9696

cevap

0

Denetleyiciniz kodlama sırası yanlıştır Görünüm ise

İşte
public ActionResult Account() 
    { 
     FileModel file = new FileModel(); 
     List<FileModel> allFiles = new List<FileModel>(); 
     file.FileID = "1"; 
     file.UserID = "1"; 
     var data = allFiles; 
     return View(data); 
    } 

Modeli

public class FileModel 
{ 
    public string FileID { get; set; } 
    public string UserID { get; set; } 
    public string FileName { get; set; } 
    public string AddedOn { get; set; } 
    public int Downloads { get; set; } 
    public int Show { get; set; } 
} 

: İşte

Kontrolör olduğunu. Bu