2009-11-10 8 views
2

Cette solution m'a échappé toute la journée. J'obtiens des données de ma base de données, mais je voudrais enregistrer les données quelque part, plutôt que d'aller à la base de données pour chaque page. Comment puis-je faire cela?Enregistrer les données dans MVC

je récupère les données de mon contrôleur ...

public ActionResult Inquiry(string Num, DateTime Date) 
{ ... 
    Bill myBill = new Bill(Num, Date, myConnections);  
    //This is where I am trying to store my data...  
    return View("Inquiry", myBill); 
} 

Puis sur ma page d'enquête ...

public ActionResult Summary(string Num, DateTime Date) 
{ ... 
    Bill myBill = new Bill(Num, Date, myConnections);  
    //... Data get retrieved here :(  
    return View("Summary", myBill); 
} 

Il est suffisamment de données pour détourner les yeux de stocker dans une session. Est-il possible d'enregistrer dans le modèle forlder et juste utiliser un héritage sur la page aspx?

Je suis un jeune bourgeon dans le monde de la programmation, pire .NET MVC

je devrais être en mesure de comprendre où aller à partir de là. Des idées?

+0

quelles données essayez-vous d'enregistrer, qu'essayez-vous de réaliser en l'enregistrant et qu'avez-vous essayé jusqu'à présent? –

+0

Une vingtaine de fichiers devraient être stockés. Je suis hesisitant à utiliser des sessions, ce qui est ce que je suis habitué en tant que débutant. J'apprends à propos de l'opérateur [Serializable]. J'ai une validation [Sérialisable] dans le modèle et j'ai essayé de sauvegarder de cette façon. Je suis complètement dans l'obscurité avec celui-ci ... – MrM

+0

Pourquoi ne voulez-vous pas l'obtenir de la base de données? Dans mon expérience, le stocker dans deux endroits ajoute une tonne de plus de complexité. D'un autre côté, si vous recherchez simplement un rendu de page plus rapide, pourquoi ne pas mettre en cache la sortie en utilisant les fonctions de mise en cache intégrées à ASP.NET MVC? –

Répondre

2

En supposant que j'ai bien compris votre question:

Vous pouvez mettre en cache l'objet. Affectez une clé unique à l'objet cache (Cache ["uniquekey"]), puis passez cette clé unique à votre autre action. Demandez à votre action de rechercher cet objet dans le cache et de l'envoyer en tant que modèle.

Voici un article about caching des 4 gars de Rolla, tandis que here is an official ASP.NET learning video sur la mise en cache.

Remarque: veillez à spécifier la date d'expiration sur l'objet mis en cache.

+0

Ou le bloc d'application Caching pour plus de contrôle: http://msdn.microsoft.com/en-us/library/ dd203226.aspx –

0

S'il s'agit de deux actions sur le même contrôleur et que vous renvoyez le modèle au contrôleur sur submit (ce qui n'est qu'une estimation de ce que vous faites), vous pouvez utiliser la collection de valeurs de formulaire et méthode updateModel, ou même utiliser une action fortement typé comme celui-ci (ish):

public ActionResult Inquiry(string Num, DateTime Date) 
{ ... 
    Bill myBill = new Bill(Num, Date, myConnections);  
    //This is where I am trying to store my data...  
    return View("Inquiry", myBill); 
} 

public ActionResult Summary(Bill bill) 
{  
    //... do stuff 
    return View("Summary", bill); 
} 

de cette façon, vous obtenez cette information d'une source naturelle; le projet de loi entrant. Vous pouvez le traiter, le sauvegarder, le changer, le jeter dans un autre modèle, puis le vider dans la vue sans le recharger. Je suis nouveau sur aspnet mvc aussi, et la plupart du temps je me bats avec les données, il y a quelque chose qui me manque architecture.

Le chapitre nerddinner de Scott Gu est extrêmement utile pour en trouver une partie.

Questions connexes