Come posso mostrare e nascondere un singolo campo attraverso la mia applicazione web attraverso un valore verificato?

0

Diciamo che ho un campo chiamato "FooName" e ho "FooName" in più punti attraverso la mia applicazione web (ASP.NET MVC4). Ho una casella di controllo che mi consente di attivare e disattivare "FooName" all'interno dell'applicazione. Attualmente, ho accesso al valore verificato (posso prelevare il valore salvato dal database) ma non sono sicuro di come mostrare / nascondere la visualizzazione del testo "FooName" attraverso l'applicazione?

Esiste una classe di utilità che posso usare o creare? Dovrei usare una regex per analizzare tutte le mie pagine web? Cosa dovrei fare?

    
posta Kala J 24.07.2015 - 00:25
fonte

2 risposte

2

Penso che tu abbia frainteso un po 'il pattern MVC.

Uno degli scopi del pattern MVC è dividere la tua applicazione in "layers".

  • Il modello --layer che contiene "dati"
  • Lo Visualizza --layer che rappresenta i "dati" (il Modello)
  • Il Controller --layer che gestisce l'input dell'utente e modifica i "dati" (il Modello)

Il modello non dice alla vista come devono essere presentati i dati.
Visualizza interpreta il Modello e presenta i dati.

Ciò significa che il Modello potrebbe contenere informazioni su come i dati possono essere presentati utilizzando proprietà o campi. Ma alla fine spetta a Visualizza .

Nel tuo caso (per esempio) puoi aggiungere la proprietà - Model.DisplayFooName . Ma questo di per sé non cambierà il modo in cui il tuo Visualizza appare perché la Vista non è stata alterata. Il tuo modello ha una nuova proprietà lucida che la tua vista può utilizzare per modificare il modo in cui vengono presentati i dati nel tuo modello . In sostanza il modello è impotente quando si tratta di Visualizza . La tua vista decide in che modo il modello -data deve essere presentato e non puoi apportare modifiche solo al tuo modello , per cambiare il modo in cui i dati sono presentati in Visualizza .

TL; DR:
In definitiva, le modifiche al tuo modello non possono cambiare il modo in cui Visualizza decide di presentare i dati al suo interno.

Per affrontare il problema attuale:

Se disponi di un'impostazione globale per alternare la visualizzazione di FooName , puoi creare un HtmlHelper per accelerare il processo di attivazione. Invece di dover scrivere qualcosa come ...:

if (GlobalSettings.DisplayFooName)
{
    <strong>@Model.FooName</strong>
}

... ogni volta che vuoi attivarlo,
puoi creare un helper che ti permetta di scrivere semplicemente

@Html.PrintFooName(Model.FooName)

O anche ..:

@Html.PrintFooName()

... poiché HtmlHelper contiene i dati del modello.

Questo potrebbe essere velocizzato usando Trova & Sostituire.

    
risposta data 25.07.2015 - 02:19
fonte
1

Vuoi avere una singola classe che conosca le tue attuali impostazioni di visualizzazione FooName. Le tue viste dovrebbero decidere di mostrare o meno il FooName in base alle impostazioni di visibilità fornite dalla tua classe.

  1. Quando costruisci le tue pagine, passa la visibilità attuale / falsa corrente stato del tuo FooName (prodotto da quella classe) in viewBag,
  2. Ovunque dove hai il tuo FooName reso hai una condizione     che controlla il valore booleano.
risposta data 24.07.2015 - 01:25
fonte

Leggi altre domande sui tag