33 messaggi dal 17 febbraio 2015
Buongiorno a tutti!

Ho una semplice domanda per voi...

Vorrei, per comodità, inserire in un file sterno tutte le dichiarazioni delle variabili (string nome; int telefono; ...).

Ho provato ad inserire un file test.cshtml in App_Code ma non vengono rilevate nelle altre pagine: "Il Nome 'NomeVariabile' non esiste nel contesto corrente".

Sapete indicarmi come fare?

Grazie!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
puoi spiegare più precisamente qual è l'obiettivo e in che contesto stai usando le variabili?

Il tuo progetto è costruito su ASP.NET MVC? Le variabili si trovano in una view, in un controller o da qualche altra parte?

In C# e VB.NET si possono definire classi su più files dichiarandole come partial. Ad esempio in un file implementi la logica mentre in un altro definisci le sue proprietà. E' questo che ti interessa?
https://msdn.microsoft.com/it-it/library/wa80x488.aspx

ciao,
Moreno

Enjoy learning and just keep making
33 messaggi dal 17 febbraio 2015
Ciao Moreno!

Ti spiego...

in pratica, sto cercando di realizzare un form con numerosi campi.

Siccome poi tutti questi campi li debbo utilizzare spesso nelle altre pagine, vorrei poter dichiarare una sola volta le variabili in modo da poterle riutilizzare in tutte le pagine di cui ho bisogno.

Ora, sto dichiarando queste variabili in ogni pagina in cui le utilizzo ed è una perdita di tempo e mi 'incasina' tutto il codice.

Ho provato ad inserirle, come dicevo nel primo post, in un file cshtml nella cartella /App_Code ma non ha funzionato.

Uso C#, per la precisione Razor e non (ove possibile) MVC.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
forse quel che ti serve è il metodo @RenderPage che trovi illustrato qui:
http://www.asp.net/web-pages/overview/ui,-layouts,-and-themes/3-creating-a-consistent-look

Ti consente di "includere" nella pagina dei pezzi di interfaccia definiti in altri file .cshtml, e perciò di riutilizzarli in vari punti della tua applicazione.

ciao,
Moreno

Enjoy learning and just keep making
1.508 messaggi dal 27 dicembre 2005
Ma renderpage non è uguale a @Html.Partial ?
33 messaggi dal 17 febbraio 2015
Ciao BrightSoul!

Ho già provato con @RenderPage, ma funciona solo con blocchi di códice.

Non permette di dichiarare masivamente delle variabili. Almeno, a me non le riconosce.

Test che ho effettuato...

.Pag1.cshtml:
@{
string aaa;
}

.Pag2.cshtml:
@RenderPage("~/views/test.cshtml")


@{
aaa = "qq";

<div>AAA: @aaa</div>
}

ERRORE: "il nome aaa non existe nel contesto corrente".
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
sì, il @RenderPage non è l'include che si usava in ASP Classico o in PHP, ma serve quando vuoi riutilizzare pezzi "compiuti" di interfaccia. Questo significa che il test.cshtml non deve contenere solo la dichiarazione della variabili, ma anche i pezzi di markup che ne fanno uso.

Se stai semplicemente cercando un modo conveniente per dichiarare tante variabili, puoi semplicemente crearti una classe che le contenga tutte come campi o proprietà.
public class MieVariabili(){
  public string aaa {get;set;}
  public string bbb {get;set;}
  public string ccc {get;set;}
}


Nelle varie view ti sarà sufficiente creare un'istanza di quella classe
@{
var mievariabili = new MieVariabili();
mievariabili.aaa = "Ciao";

<div>AAA: @mievariabili.aaa</div>
}


totti240282 ha scritto:

Ma renderpage non è uguale a @Html.Partial ?

Sì, anche se @RenderPage accetta il percorso di un file, anziché il nome di una action. Dato che AspNetx sta usando ASP.NET WebPages che non ha la nozione di controller come in ASP.NET MVC, quello è il metodo indicato per riutilizzare il contenuto di una "pagina" in un'altra.

ciao,
Moreno
Modificato da BrightSoul il 29 maggio 2015 22.49 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.