Einstellung imageURL mit einer Funktion in ASP.NET
Ich getan habe diese Aufgabe vor innerhalb von Repeatern und es hat funktioniert. Allerdings kann ich nicht bekommen, die unten, um Arbeit für mich in einem normalen webforms Seite. Die Bilder erscheinen als defekte links und Haltepunkte, die ich in der codebehind-werden nicht ausgelöst.
(in der aspx-Datei)
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='<%# GetImageDirectory()%>btnRunReport.png' />
(codebehind)
public string GetImageDirectory()
{
return "~/App_Variants/LBSX/images/";
}
Dies ist die zweite Methode, die ich ausprobiert habe, in der anderen ich habe versucht, die übergabe der imagename durch als string, und würde es wieder der ganze link Weg. Noch kein Glück!
Irgendwelche Gedanken?
Dank!
[EDIT] Danke für die Hilfe alle. Am Ende, nach der praktischen Tipps fand ich eine rekursive snippet, das war der trick wie folgt:
private void UpdateImages(Control Parent)
{
foreach (Control c in Parent.Controls)
{
ImageButton i = c as ImageButton;
if (i != null)
{
i.ImageUrl = "~/App_Variants/LBSX/images/" + i.ImageUrl;
}
if (c.HasControls())
{
UpdateImages(c);
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
UpdateImages(Page);
...
Hoffe es hilft jemand anderem.
Cheers
Ja, sorry, ich habe auch versucht, die <%= aber immer noch kein Haltepunkt ausgelöst. Was sonst könnte ich falsch gemacht?
Auch, wenn ich eine Quelle auf der Seite, die Steuerung zeigt die src: src="<%=GetImageDirectory()%20%>" anstatt zu versuchen, pass was auch immer es berechnet wird. Vielleicht gibt es einen Anhaltspunkt gibt
InformationsquelleAutor Glinkot | 2010-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, wie Zachary erwähnt, bist du mit der code-block für Daten verbindlich.
Zweiten, wie Sie es schon einmal versucht, mithilfe einer inline-expression (
<%= %>
) funktioniert nicht entweder in Ihrem Fall, da Sie nicht verwenden können, eine inline-Ausdruck für eine Eigenschaft eines server-tag.Was könnten Sie stattdessen tun, ist die Definition einer image-Taste, mit der HTML-syntax, weglassen der
runat="server"
tag, und verwenden Sie die inline-Ausdruck, um Ihre Bild-URL:Was eine inline expression nicht ist, ruft es
Response.Write()
mit dem Wert zwischen<%= %>
als parameter, z.B.<%= this.MyVar %>
istResponse.Write(this.MyVar)
.Dank deiner Anleitung habe ich es nun geschafft, diese zu lösen. Endete, Durchlaufen die Kontrollen, wie erwähnt, und setzen Sie den Pfad auf der Vorderseite. Funktioniert einen Charme! Ich werde fügen Sie code hinzu, um die Frage für die anderen Referenz.
Ich bin froh, Sie könnten dieses Problem lösen. Ich habe es geschafft den code zu schreiben für das Durchlaufen der controls; wenn jemand interessiert ist, finden Sie den genannten code hier: hpaste.org/fastcgi/hpaste.fcgi/view?id=27788#a27788
Vielen Dank für diese, sehr geschätzt, Kumpel. Beachten Sie, dass die, die ich oben rekursiv in der Erwägung, dass deins zu sein scheint verschachtelt zu zwei Ebenen. Nicht sicher, ob es überhaupt geht unten zwei Ebenen, wohlgemerkt... 🙂
InformationsquelleAutor Giuseppe Accaputo
Ihre syntax ist für Datenbindung, <%# %>. Wenn Sie nur versuchen, zu tun, inline c# verwenden, sollten Sie das <%= %>.
InformationsquelleAutor Zachary
Gebe ich Ihnen eine andere Lösung. Verwenden ExpressionBuilder :
Erstellen Sie eine Klasse devired von ExpressionBuilder und override-Funktion GetCodeExpression
expressionArray1
ist das Eingabe-array fürGenerateLink
Funktion. Sie können ändern der Größe von array nach Zahl der input-Parameter für Ihre Funktion2.Registrieren Sie Ihren Ausdruck in webconfig
3.In Ihrer Ansicht verwenden können, new-Ausdruck:
4.Viel Spaß !!!
InformationsquelleAutor Nam Trung