Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ImageUrl im Code gesetzt: Wird nicht geladen weil Bild nicht gefunden - 404 Not Found
Taraxacuma
myCSharp.de - Member



Dabei seit:
Beiträge: 15
Herkunft: Rhein Neckar Kreis

Themenstarter:

ImageUrl im Code gesetzt: Wird nicht geladen weil Bild nicht gefunden - 404 Not Found

beantworten | zitieren | melden

Hallo ihr Lieben,

bin jetzt schon mehr als zwei Tage am googeln, ich finde einfach meinen Fehler nicht. Wenn ihr bitte mal schauen könntet?

Und zwar, ich habe hier ein Image (png) das in der Projektmappe unter einem Ordner img hinterlegt ist. Das Image möchte ich auf Buttonclick angezeigt bekommen. Nur funktioniert das nicht. Eine Fehlermeldung bekomme ich nur im Browser (F12) angezeigt. Vielleicht wisst ihr ja was ich da übersehe, ich weiß so langsam nichtmehr wo ich noch suchen soll....
Fehler
Fehler im Browser: Failed to load resource: the server responded with a status of 404 (Not Found)


using System.Web.UI.WebControls;

namespace LinkVersuch.View.Form
{
    public partial class Test1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnImage_Click(object sender, EventArgs e)
        {
            try
            {
                img1.ImageUrl = @"~/LinkVersuch/img/Test1.png";
            }
            catch (Exception ex)
            {

                throw new ApplicationException(string.Format(ex.ToString()));
            }
            

            // http://localhost:61673/LinkVersuch/img/Test1.png
            // http://localhost:61673/View/Form/Test1.aspx 

        }


    }
}

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test1.aspx.cs" Inherits="LinkVersuch.View.Form.Test1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <a href="javascript:void(0)" onclick="window.open('Test2.aspx', 'Nutzungsbedingungen', 'width=200, height=400, status=yes, location=no, scrollbars=yes')">
            <asp:CheckBox ID="checkOpen" runat="server" />
           Ich bin mit den Nutzungsbedingungen einverstanden.
        </a>
         
    </div>
        <div>
        <asp:Button ID="btnImage" OnClick="btnImage_Click" runat="server" Text="Imageklick" />
            <asp:Image ID="img1" runat="server" Height="343px" Width="277px" />

        </div>
        


    </form>
</body>
</html>
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Taraxacuma am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15704
Herkunft: BW

beantworten | zitieren | melden

Bei Deiner Recherche müsstest Du aber auf die MapPath Methode getroffen sein, mit denen man URIs korrekterweise umsetzt und nicht mit String Frickelei.
private Nachricht | Beiträge des Benutzers
Taraxacuma
myCSharp.de - Member



Dabei seit:
Beiträge: 15
Herkunft: Rhein Neckar Kreis

Themenstarter:

beantworten | zitieren | melden

Hm...danke für die schnelle Antwort, habe das jetzt mal ergänzt, bekomme jetzt aber eine andere Fehlermeldung....


 protected void btnImage_Click(object sender, EventArgs e)
        {
            try
            {
                img1.ImageUrl = Server.MapPath(@"~/img/Test1.png");
            }
            catch (Exception ex)
            {

                throw new ApplicationException(string.Format(ex.ToString()));
            }
Fehler
Not allowed to load local resource: file:///C:/users/nimanz/documents/visual%20studio%202015/Projects/LinkVersuch/LinkVersuch/img/Test1.png

Und angezeigt wird das Bild deshalb noch immer nicht.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15704
Herkunft: BW

beantworten | zitieren | melden

img1.Source = new BitmapImage(new Uri(Server.MapPath(@"~/img/Test1.png")));
private Nachricht | Beiträge des Benutzers
Taraxacuma
myCSharp.de - Member



Dabei seit:
Beiträge: 15
Herkunft: Rhein Neckar Kreis

Themenstarter:

beantworten | zitieren | melden

Was muss ich denn meinem asp.net Webforms Projekt zufügen damit das BitmapImage funktioniert?

System.Windows.Media.Imaging.BitmapImage ~ findet er nicht .

Danke für deine Hilfe, also so doof hätte ich mich eigentlich nicht eingeschätzt. X(
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3429
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,

das BitmapImage kann an der Stelle nicht funktionieren - das ist WPF und hat mit WebForms nichts zu tun.

Du könntest es mal versuchen mit

img1.ImageUrl = ResolveClientUrl("~/img/Test1.png");
Allerdings hast Du ja schon ein serverseitiges Control, in dem Du das versuchst. Das sollte den Pfad eigentlich automatisch auflösen, wenn Du es so wie im Startbeitrag machst. Könnte allerdings sein, dass das Auflösen erst passiert, wenn ein DataBind-Aufruf erfolgt. Hast Du so einen irgendwo in Deiner Page?

Wenn das alles nichts hilft, poste doch bitte mal den fertig gerenderten HTML-Code (Quelltextansicht im Browser), damit man genau sieht, was er aus Deinem Pfad bastelt.

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15704
Herkunft: BW

beantworten | zitieren | melden

Stimmt, war mein Gedankenfehler des Forms Bindings.
In WebForms war glaube ich die einfachste Variante beim Code Behind Base64, nicht BitmapImage.

img1.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(<Byte Array Picture>)
oder eben data:image/png wenn es ein PNG statt jpeg sein sollte.

Wenn "~/img/Test1.png" nicht gefunden wird, dann liegt das Bild evtl. nicht da, wo es liegen sollte.
private Nachricht | Beiträge des Benutzers
Taraxacuma
myCSharp.de - Member



Dabei seit:
Beiträge: 15
Herkunft: Rhein Neckar Kreis

Themenstarter:

beantworten | zitieren | melden

Klappt wunderbar mit


img1.ImageUrl = ResolveClientUrl(@"~/img/Test1.png");
Vielen Dank........

Bin jetzt sowas von erleichtert....

Danke
private Nachricht | Beiträge des Benutzers