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....
Fehlermeldung:
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>
Bei Deiner Recherche müsstest Du aber auf die MapPath Methode getroffen sein, mit denen man URIs korrekterweise umsetzt und nicht mit String Frickelei.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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()));
}
Fehlermeldung:
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.
(~~
img1.Source = new BitmapImage(new Uri(Server.MapPath(@"~/img/Test1.png")));
~~){gray}
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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(
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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Klappt wunderbar mit
img1.ImageUrl = ResolveClientUrl(@"~/img/Test1.png");
Vielen Dank........
Bin jetzt sowas von erleichtert....
Danke 🙂