Sono nuovo in asp.net, ma sto cercando di rifare il mio sito abbandonando una struttura statica che prevede un layout con un iframe al centro.
Pensavo di utilizzare una soluzione che prevedesse una masterpage. Dal momento che la masterpage e le content pages non sono affatto pagine separate, ogni volta che si passa da una content page a un'altra, nell'ambito dello stesso layout definito dalla comune masterpage, si vede un refresh dello schermo, perché appunto il server consegna una pagina nuova all'utente.
Ora, mi hanno detto che utilizando il controllo updatepanel è possibile un update parziale (e un refresh altrettanto parziale). In pratica il layout della master page comune alle content pages rimarrebbe là dov'è e solo la content page all'interno di quel layout cambierebbe.
In linea teorica ho capito come debbo agire, ma non ci riesco.
Ho creato una master page che rassomiglia a questa:
codice:
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server"></script>
<html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
<head runat="server">
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" SupportsPartialRendering="true" runat="server"></asp:ScriptManager>
<div>Layout ecc. ecc.</div>
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server"></asp:contentplaceholder>
</div>
<div>Layout continua, ecc. ecc.</div>
</form>
</body>
</html>
Poi ho creato alcune content pages modellate più o meno così:
codice:
<%@ Page Language="C#" MasterPageFile="path della masterpage..." Title="Untitled Page" AutoEventWireup="true" CodeFile="default.aspx.cs" Inherits="_Default" %>
<%@ MasterType VirtualPath="path della masterpage..." %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:UpdatePanel id="Updatepanel1" runat="server">
<ContentTemplate>
<div>contenuto della content page</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
tuttavia così com'è non funziona (le pagine vengono caricate nel browser, ma l'update panel non funziona
so che dovrei inserire un trigger nell'updatepanel, subito dopo il tag contenttemplate
in pratica: quando l'utente clicca un link qualunque nel mio sito, il contenuto dell'UpdatePanel1 dovrebbe cambiare - l'effetto sarebbe proprio quello dei frames o degli iframe, dando l'impressione di continuità tra le pagine, senza refresh nella parte del layout e con tutti i vantaggi dell'asp.net...
mi hanno detto che non posso usare i normali hyperlink ("a href"), ma dovrei convertire tutti i link in linkbuttons e convertire le page content in user control
solo non so proprio come fare, mi aiutereste?
un'altra cosa: ho notato che da quando ho messo quell'updatepanel tutti i javascript contenuti nel contenttemplate non partono più...
credo che la cosa dipenda dallo scriptmanager... cosa debbo fare per farli funzionare?
grazie 1000