MVC - Comment passer du modèle à partir de l'affichage de contrôleur de
Je suis en train de travailler avec un modèle qui a besoin de passer à travers une série de contrôleurs et les vues de manipuler le long du chemin(que le chargement sur le premier contrôleur). Est-il un moyen de conserver le modèle à partir de la vue en arrière vers un contrôleur et ainsi de suite?
Voici mon code.
Modèle:
public class ROWModel
{
#region Properties
//Request
public List<TBLRETURNABLEITEMS> TBLRETURNABLEITEMS { get; set; }
//public List<ReturnReasons> ReturnReasons { get; set; }
public int Order_No { get; set; }
public string First_Name {get; set; }
public string Last_Name {get; set; }
public string Company { get; set; }
public string Address_1 { get; set; }
public string Address_2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Postal_Code { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string CustomerCode {get; set; }
public string TerritoryCode {get; set; }
//Post
#endregion
#region Constructor
public ROWModel()
{ }
#endregion
}
public class ReturnableItems : IComparable<ReturnableItems>
{
private int _id;
private decimal _ordered;
private decimal _shipped;
public int Id
{
get { return _id; }
set { _id = value; }
}
public decimal Ordered
{
get { return _ordered; }
set { _ordered = value; }
}
public decimal Shipped
{
get { return _shipped; }
set { _shipped = value; }
}
}
Après le remplissage du modèle et de l'envoyer à la vue de tout ce qui est affiché à l'aide du modèle tel qu'il devrait être. Je pense coller le modèle comme sur la balise form:
<% using (Html.BeginForm("Items", "ROW", Model))
Voici le post des Éléments d'Action de la LIGNE de contrôleur:
[ActionName("Items"), AcceptVerbs(HttpVerbs.Post)]
public ActionResult Items(ROWModel model, FormCollection collection)
Problème est le Modèle ne prend pas en retour la liste des TBLRETURNABLEITEMS que j'ai remplie avec au départ. Il garde les autres propriétés que j'ai remplie mais pas la liste. Comment puis-je conserver ce modèle de données, sans avoir à le recharger sur chaque contrôleur doit je veux.
oui ASP.NET MVC.
Ne pouvez-vous pas simplement d'ajouter le modèle de vue type d'un argument à une méthode d'Action? public ActionResult ActionOnSecondController(MyViewModel modèle) {...}
Pensais que je pouvais, mais je n'ai pas toute la Liste<TBLRETURNABLEITEMS> articles de retour. Serait-ce parce que je suis en utilisant une classe partielle pour afficher la Liste des<TBLRETURNABLEITEMS> articles? Je ne pense donc, puisque à la fois la vue et l'partielle hériter du modèle.
OriginalL'auteur Billy Logan | 2009-12-03
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez utiliser TempData.
Donc quelque chose comme ceci:
Vous avez été le premier à répondre correctement. TempData est une solution exacte de ce problème. Après un peu plus de recherche, cependant, probablement pas une bonne idée pour ma situation en raison de db de la simultanéité et de notre site assis sur le serveur d'équilibrage de charge.
OriginalL'auteur rrejc
NerdDinner Étape 6: ViewData et ViewModel
http://nerddinnerbook.s3.amazonaws.com/Part6.htm
OK. Mais comment faire face à des problèmes de concurrence? Ce qui se passe si quelqu'un modifie les données entre vos pages vues?
C'est un bon point. Devinez il semble que j'ai peut être dirigés vers le bas de la route, je n'avais pas envie d'aller vers le bas et qui est de bases de données et le rechargement sur chaque contrôleur de l'action.
OriginalL'auteur Robert Harvey
Vous pouvez utiliser de session pour ce genre de problèmes.
ou vous pouvez utiliser tempdata si les poteaux sont séquentielles .
et aller chercher à chaque fois à partir DB fonctionne si vous exécutez l'application en Intranet, réseaux.
OriginalL'auteur ali62b
L'obtention d'un modèle (tout modèle) à partir de la vue du contrôleur est assez simple.
D'autres ici ont couvert la partie où vous prenez dans un modèle objet en tant que param.
ce qui vous semble manquer, c'est la liaison de la liste, qui se base sur les noms dans votre formulaire d'éléments dans la vue. en gros,ils ont pour ressembler à C# liste des éléments comme des chaînes de caractères. Donc, ne sachant pas toutes les propriétés de vos éléments d'une liste, quelque chose comme:
Évidemment,c'est juste une chaîne de caractères, de sorte que vous pouvez construire dans une boucle pour faire le nombre de lignes de produits consignés.
OriginalL'auteur Paul
Je pense que dans MVC ainsi de session est une option pratique au lieu de l'incendie avec le retour à l'action avec Viewmodel.
OriginalL'auteur Ajith Menon