webentwicklung-frage-antwort-db.com.de

Pfad zu Dateien im Inhaltsordner (ASP.NET MVC)

Ich verstehe immer noch nicht, wie der Inhaltsordner in ASP.NET MVC funktioniert. Um die Dinge klarer zu machen, habe ich ein paar Fragen:

  1. Ist der Inhaltsordner der Stammordner? Ich meine, zeigt http: // localhost/ auf Inhalt oder ist es etwas anderes?
  2. Ich habe eine Datei namens dummyIcon.png im Ordner Content/images/temp. Wie finde ich es von meiner Domain-Ebene aus (was ein Code Library-Projekt ist)? 
  3. Was ist die bewährte Methode zum Anzeigen von Bildern in ASP.NET MVC? Soll ich einen Pfad zum Bild in der Datenbank speichern (was mir persönlich lieber ist) oder muss ich ein Byte-Array speichern und zur Ansicht zurückkehren?

Ich fand die folgenden Links im Zusammenhang mit der MVC-Webanwendung hilfreich, aber ich würde mich trotzdem über einige Antworten auf die oben gestellten Fragen freuen. Vielen Dank.

Kann ein ASP.NET-MVC-Controller ein Image zurückgeben?

Anzeigen von Bildern mit View und Controller durch ASP.NET MVC

21
Kassem

1.Ist der Inhaltsordner der Stammordner? Ich meine, dass http: // localhost/ auf .__ verweist. Inhalt oder ist es etwas anderes?

Nein, http: // localhost: port/ verweist nicht auf den Inhaltsordner. Sie können auf Dateien im Inhaltsordner über http: // localhost: port/content/ ... zugreifen.

2.Ich habe eine Datei namens dummyIcon.png im Ordner content/images/temp. Wie finde ich es von meiner Domain-Ebene aus (was ist ein Code Library-Projekt)?

Sie sollten darauf als http: // localhost: port/Content/images/temp/dummyIcon.png zugreifen können.

3.Was ist die beste Vorgehensweise von Anzeigen von Bildern in ASP.NET MVC? Sollte ich einen Pfad zum Bild in .__ speichern. die Datenbank (die ich persönlich vorziehe), oder speichere ich ein Byte-Array und es zur Ansicht zurückbringen?

Wo Sie die Bilder speichern, hängt von den Anforderungen Ihrer Anwendung ab. Sind diese generischen Bilder, die zum Anzeigen von Anwendungsbildern (Symbole, Firmenlogo usw.) verwendet werden? Dann sollten sie am besten im Dateisystem gespeichert werden. 

Wenn sich Ihre Anwendung mit Bildern befasst und Sie mit dem Speichern von Bildern, der Bearbeitung usw. arbeiten, benötigen Sie möglicherweise eine Datenbank. Ich denke, das Speichern von Bildern, die in der Webanwendung verwendet werden, ist ein Overhead.

11
Abdel Raoof
  1. Alles in der Wurzel zeigt auf die Wurzel, wenn es von Ihren Routen ignoriert wird:

    Wenn Sie ein Bild im Stammverzeichnis Ihres Projekts haben. Dann sagen Sie http:://localhost/dummy.ico" eine 404, kein Controller gefunden. Bis tun Sie dies in Ihrem global.asax.cs:

    routes.IgnoreRoute("dummy.ico");
    //you could add wildcards here to match different things
    
  2. Wenn Sie in Code angeben, dass File.Open(); verwendet wird, benötigen Sie den physischen Pfad zur Datei. Du bekommst es so:

    string filePath = Server.MapPath(Url.Content("~/Content/Images/Image.jpg"));
    
  3. Es liegt an Ihnen hier, obwohl ich sagen würde, dass das Einfügen von Dateien in die Datenbank sehr sinnvoll ist, wenn Sie alles an einem Ort haben möchten. Wenn Sie Ihre App verschieben möchten, verschieben Sie einfach die Datenbank. 

Wenn es sich um Dateipfade handelt, denken Sie bitte daran, dass Sie keine doppelten Dateinamen verwenden möchten. Daher müssen Sie jeder Datei eine GUID geben und diese dann verknüpfen. Es kann sinnvoll sein, wenn Sie über eine große Anzahl von Dateien (oder große Dateien selbst) verfügen, sodass Ihre Datenbank nicht verrückt wird.

HTH

37
gideon

Sie sollten ein Modellobjekt erstellen, das Ihr Controller zurückgeben soll. In diesem Beispiel kehre ich SearchPageModel zurück, einer Klasse, die ich erstellt habe. Nehmen wir an, dieses Objekt hat eine Eigenschaft namens imageURL

stellen Sie jedoch sicher, dass der Controller tatsächlich ein ActionResult zurückgibt

also zum beispiel ...

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Search()
    {
        SearchPageModel Model = new SearchPageModel();

        // populate the Model properties
        Model.ImageURL = "myjpeg"

        return View("Search", Model);
    }

ich übergebe dieses Modellobjekt dann zu meiner gewünschten Ansicht, in diesem Fall meiner "Suche"

und um das Bild anzuzeigen, würde ich in der Ansicht hinzufügen ..

<img src="Images/<%=Model.ImageURL %>.jpg" />
0
JGilmartin