2009-04-06 3 views
0

Hallo, ist es möglich folgendes zu tun?C# von der Design Seite aufrufen

<a href="/Reports/report.aspx?StartDate=<% Request.Params.Get("StartDate"); 
    %>&EndDate=<% Request.Params.Get("EndDate"); %>">View analysis</a> 

Vielen Dank.

Antwort

1

Sicher, es ist möglich! Sie müssten die Anführungszeichen lösen, zuerst und zweitens, sollten Sie die ASP.NET Response.Write-Syntax (<%=Expression%>) werden:

<a href='/Reports/report.aspx?StartDate=<%= Request.Params.Get("StartDate"); %>&EndDate=<%= Request.Params.Get("EndDate"); %>'>View analysis</a> 

Aber ist es empfehlenswert? Ich würde nicht denken. Die Gründe dafür liegen möglicherweise darin, mögliche Sicherheitslücken zu öffnen (so dass ungeprüfte Querystring-Daten verwendet werden können), um Probleme mit der Lesbarkeit zu vermeiden. Denken Sie daran, dass der klassische ASP-Code vor der Veröffentlichung von ASP.NET geschrieben wurde.

Es wäre viel besser, diese Logik im Code-Behind nach Überprüfung der Querystring für gültige Werte und die Zuordnung der NavigateUrl einer asp:HyperLink Kontrolle durchzuführen.

2

Sie können dies jedoch tun, damit ein böswilliger Benutzer dem Parameter unerwartete Daten bereitstellen kann.

Ich würde wärmstens empfehlen, die Daten zu bereinigen und sicherzustellen, dass es das ist, was Sie erwarten, BEVOR Sie es auf die Seite setzen.

glauben auch die Syntax für den Start des Codeblocks benötigt <% ist = (Beachten Sie das Gleichheitszeichen)

+0

Sie haben recht mit der Response.Write-Syntax, obwohl beide in vielen Fällen funktionieren. – Cerebrus