mentre guardando un tema che ho scaricato dalla galleria Orchard CMS, ho notato che un file Layout.cshtml ha avuto questo blocco di codice nella parte superiore del file:Cosa fa un blocco di codice @functions in un file rasoio, e quando (se mai) dovrei usarlo?
@functions {
// To support the layout classifaction below. Implementing as a razor function because we can, could otherwise be a Func<string[], string, string> in the code block following.
string CalcuClassify(string[] zoneNames, string classNamePrefix)
{
var zoneCounter = 0;
var zoneNumsFilled = string.Join("", zoneNames.Select(zoneName => { ++zoneCounter; return Model[zoneName] != null ? zoneCounter.ToString() : ""; }).ToArray());
return HasText(zoneNumsFilled) ? classNamePrefix + zoneNumsFilled : "";
}
}
so quale sia la funzione dichiarata fa (calcola quali zone sono popolate per restituire la larghezza di ogni colonna), la mia domanda è: qual è l'uso corretto del blocco @function e quando dovrei mai usarlo?
Personalmente penso che dovrebbe essere evitato poiché confonde le acque in quello che è il livello di presentazione/visualizzazione e qual è il livello/livello di controllo aziendale. – Liam
@Liam - Non sono d'accordo. Penso che dovrebbe essere espressamente usato allo scopo di * evitare * di confondere le acque. In questo esempio, è per scopi di determinare la larghezza della colonna, che non è qualcosa che il controller dovrebbe nemmeno sapere. – Bobson
@bobson point preso – Liam