2012-03-30 6 views
0

Ich bin relativ neu zu MVC Entwurfsmuster und Zugriff auf LinqToSql Daten. Im Grunde möchte ich die Konzepte von MVC verwenden, um auf Daten zuzugreifen (die ich in einem Linq2Sql DataContext gespeichert habe) und die Ergebnisse in eine Gridview zu füllen. Da Code-Behind-Dateien den Zweck von MVC besiegen, wo genau würde ich meine LINQ-Abfrage, um die Daten zu markieren, und binden Sie es an eine Gridview?Zugriff auf LinqToSql DataLayer in MVC2

Dies ist mein Code für SELECT: public void getBills() {

 BillDataContext context = new BillDataContext(); 
     var bills = 
      from b in context.Bill_Items 
       select b; 

    } 

Ich habe versucht, dies in einem Controller setzen, aber offensichtlich kann mein Gridview-Objekt aus dem Controller nicht greifen. Ich bemühe mich sehr, keine Code-Behind-Datei in diese Ansicht einzubinden und von dort aus weiterzugehen. Hoffentlich kann jemand die Best Practices für diese Aufgabe beleuchten.

+0

Sie erhalten eine Ansicht mit Tabellen Gerüst verwenden, kein 'GridView'. GridViews funktionieren nur in ASP.NET, nicht in ASP.NET MVC. NerdDinner zeigt ein Beispiel, das zeigt, wie man eine Ansicht erstellt, und ein Repository, das ein Raster von Elementen anzeigt: http://www.asp.net/mvc/tutorials/nerddinner/use-controllers-and-views-to-implement- a-listingdetails-ui Sehen Sie sich etwa 3/4 der Seite unten im Abschnitt ** "Implementieren der Indexansichtsvorlage" an. ** –

Antwort

1

Sie könnten eine Repository-Klasse erstellen, die all Ihren Linq-Code enthält und Ihre Modellobjekte zurückgibt. Ex BillingRepository mit einer Methode namens GetBillItems (..)

Sie diese Repository-Klasse von der Steuerung aufrufen können und das Modell zur Ansicht übergeben

public ActionResult BillItems() 
{ 
    BillingRepository repository = new BillingRepository(); 
    var model = repository.GetBilItems(); 
    return View(model); 
} 
+0

Sie müssen ihm erklären, dass in ASP.NET MVC kein GridView vorhanden ist. Ich schreibe gerade eine Antwort dafür; Willst du es ihm sagen, oder soll ich meine Antwort vervollständigen? :) –

+0

Auf diese Weise können Sie das Modell an Ihre Ansicht binden, und es gibt keinen Code in der Ansicht selbst – TGH

+0

Sie benötigen noch eine Ansicht. Was meinst du, kein Code? Du brauchst noch etwas, um es anzuzeigen, selbst wenn es ein rudimentärer Tisch mit den '<% %>' Donut-Löchern ist. –