Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002

    Asp.net MVC Template grafico

    Ciao a tutti,
    vorrei un consiglio.
    Voi quando create una nuova applicazione come scegliete il vostro Template ?

    Lo fate voi , vi appoggiate a qualche template già fatto ?

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Puoi usare un layout anche scritto da qualcun altro in maniera molto semplice. Generalmente un layout html è fatto da una o piu pagine piu i file css e js. Ogni file html in realtà ha una parte fissa (l'header, il footer, la sezione head, ecc.) e una parte 'dinamica' che contiene il contenuto delle singole pagine (lo stesso concetto delle masterpage).

    STEP 0:
    Prepara il campo. Crea un applicazione asp.net mvc vuota, un controller Home e un action Index con relativa view. Copia i file accessori (img/css/js) del tuo template html in una cartella del tuo progetto per esempio: /Content/MioTemplate mantenendo intatta la struttura delle directory.

    STEP1:
    Prendi il contenuto del file html principale del template e copialo interamente nel file _Layout.cshtml
    codice:
    <!DOCTYPE html>
    <html>
      <head>
        <title>Bootstrap 101 Template</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
      </head>
      <body>
        <h1>Parte fissa del template uguale a tutte le pagine!</h1>
        
    
    Parte dinamica</p>
        [img]img/immagine-dinamica.jpg[/img]
        <h2>Footer Fisso</h2>
        
        <script src="//code.jquery.com/jquery.js"></script>
        
        <script src="js/bootstrap.min.js"></script>
      </body>
    </html>
    STEP2:
    Individua tutta la parte 'dinamica' del template. tagliala e incollala nel file Index.cshtml.
    codice:
        
    
    Parte dinamica</p>
        [img]img/immagine-dinamica.jpg[/img]
    STEP3:
    In _Layout.cshtml inserisci il RenderBody al posto della parte dinamica:
    codice:
    <!DOCTYPE html>
    <html>
      <head>
        <title>Bootstrap 101 Template</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
      </head>
      <body>
        <h1>Parte fissa del template uguale a tutte le pagine!</h1>
        @RenderBody()
        <h2>Footer Fisso</h2>
        
        <script src="//code.jquery.com/jquery.js"></script>
        
        <script src="js/bootstrap.min.js"></script>
      </body>
    </html>
    STEP 4:
    Cambia tutti i riferimenti relativi delle src del template con riferimenti dell'applicazione:
    per esempio src="js/bootstrap.min.js" diventa src="~/content/miotemplate/js/bootstrap.min.js"
    Se stai usando una versione inferiore a mvc 3 il tile(~) in razor non funziona e dovrai usare ll comando piu lungo: src="@Url.Content("/content/miotemplate/js/bootstrap.min.js")"

    ESEGUI E VERIFICA CHE TUTTO FUNZIONI!

    Per rendere dinamiche delle parti esterne alla sezione 'Body' abbiamo diversi modi:

    STEP 5 (rendere dinamico il titolo di ogni pagina):
    In Index.cshtml in una posizione qualsiasi del file (generalmente in cima)
    codice:
    @{
      ViewBag.TitoloPagina = "Controller home Action Index!"
    }
    e nel _Layout.cshtml invece modifica il tag <title> cosi
    codice:
      <title>@ViewBag.TitoloPagina</title>
    STEP 6 Aggiungere intere sezioni di codice in posizioni esterne al Body:
    Se per esempio volessi aggiungere, solo per una pagina, una sezione di javascript aggiuntiva rispetto a quella del template posso prevedere uno spazio in fondo alla pagina prima della chiusura del tag body. Le sezioni possono essere aggiunte ovunque nel template.
    codice:
    <!DOCTYPE html>
    <html>
      <head>
        <title>@ViewBag.TitoloPagina</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <link href="~/content/miotemplate/css/bootstrap.min.css" rel="stylesheet" media="screen">
      </head>
      <body>
        <h1>Parte fissa del template uguale a tutte le pagine!</h1>
        @RenderBody()
        <h2>Footer Fisso</h2>
        
        <script src="//code.jquery.com/jquery.js"></script>
        
        <script src="~/content/miotemplate/js/bootstrap.min.js"></script>
        @RenderSection("ScriptAggiuntivi", false)
      </body>
    </html>
    e in un punto qualsiasi del file Index.cshtml:
    codice:
    @section ScriptAggiuntivi {
      <script>
        //altro javascript solo per la home page
      </script>
    }
    Il secondo parametro booleano indica se la sezione è obbligatoria per tutte le view.

    STEP 7: Usare qua e la nel template @Html.Action per renderizzare pezzi di pagina con action che ritornano delle PartialView. Non scrivo l'esempio perche credo sia una cosa che c'è in tutte le guide di asp.net mvc

    credo sia tutto.

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Perfetto ho letto anche un libro e ho ritrovato esattamente le stesse cose

    Grazie !

    Per le partialview alla fine ti riferisci ai vecchi "usercontrol" delle Webforms giusto ?

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    si hanno lo stesso scopo ma le possibilità in MVC sono due.

    @Html.Partial("Dettagli", Model.Prodotti[i])

    è un operazione che riguarda il motore di rendering. Quindi piu rapida. è solo un modo per refattorizzare una view troppo complessa. Ti accorgi che devi usare Partial quando i dati che devi visualizzare sono gia presenti nel tuo model ma la view sta diventando troppo incasinata.

    mentre

    @Html.Action("LoginInfo", "Account")

    risolve la route, istanzia il controller Account, richiama la Action LoginInfo e ritorna la partialView in base al risultato di quella action. è un operazione piu complessa e serve a demandare il lavoro di rendering di un pezzo di finestra ad un altra action perche magari deve recuperare dei dati e prendere decisioni che esulano dalle responsabilità action corrente. Ti accorgi che devi usare Action quando devi renderizzare informazioni che non hai a disposizione nel model corrente.


  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Ma la seconda di cui parli non sono le childaction ?

  6. #6
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    si

    diciamo che cosi completiamo il discorso del primo post

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.