2017-10-17 1 views
0

So schreibe ich eine ASP.NET Core MVC-Anwendung, wo Benutzer in der Lage sein sollten, eine Excel-Datei hochladen, wenn eine Datei hochgeladen wird, muss ich die hochgeladene Datei lesen und ein Modell der Daten erstellen die Datei.Shorten Controller-Methode in MVC

Ich erstelle derzeit dieses Modell in meiner Controller-Methode, aber das machte meine Methode ziemlich lang.

Meine aktuelle Lösung ist das Erstellen einer Klasse in meinem Controller, die sich mit dem Erstellen eines Modells aus einer Excel-Datei beschäftigt, aber ich habe das Gefühl, dass dies der falsche Weg ist.

Also meine Frage ist: Was ist der richtige Ort, um den Code, der liest meine Excel-Datei und steckt es in ein Modell?

Antwort

0

Sie sollten eine neue .NET-Standardbibliothek erstellen und dort die Klasse erstellen, die das Modell erstellt.

Die empfohlene Methode besteht darin, die Klasse als Implementierung und eine Schnittstelle (IExcelModelBuilder) zu verwenden, die alle öffentlichen Methoden dieser Klasse (ExcelModelBuilder) verfügbar macht. Auf diese Weise können Sie diesen Service in Ihren Controller-Konstruktor einfügen und als Bonus können Sie ihn auch einfach testen. Sie können mehr über Dependency Injection in .NET Core lesen.

Sie den Dienst in Ihrer Startdatei registrieren:

// This method gets called by the runtime. 
// Use this method to add services to the container. 
public void ConfigureServices(IServiceCollection services) 
{ 
    {...} 
    services.AddTransient<IExcelModelBuilder, ExcelModelBuilder>(); 
} 
0

Schritt 1: eine neue .NET-Standard-Bibliothek erstellen (Service)

Schritt 2: die Referenz in die mvc Anwendung dass hinzufügen Bibliothek.

Schritt 3: Schritt zwei erstellen Sie eine Klasse, die sich mit all dem Zeug beschäftigen wird, wenn Sie eine begrenzte Anzahl von Aufgaben ausführen müssen, aber wenn Sie es trennen und eine generische Lösung wollen, dann erstellen Sie eine Schnittstelle (IUpload) und implementieren Sie dann alle seine Methoden in einer Klasse (Upload). Registrieren Sie den Dienst auch in Ihrer Startup-Datei: