MVC 5 Plusieurs Modèles dans une Seule Vue

Quelqu'un pourrait donner un exemple de la façon de combiner les deux modèles dans un délai d'un point de vue?

Actuellement, j'ai une page appelée RecordCard qui contient:

@model IEnumerable<WebApplication1.Models.Weight>

Cela est prévu par le code suivant dans la AccountController:

public ActionResult RecordCard()
{
    var UserId = User.Identity.GetUserId();
    var weightModel = from m in db.Weights where m.UserId == UserId select m;
    return View(weightModel);
}

La RecordCard page contient également un formulaire qui est lié à la classe suivante:

public class AddWeightModel
{
    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Stone")]
    public Nullable<short> Stone { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Pound")]
    public Nullable<short> Pound { get; set; }
}

Cependant, ces deux modèles individuels avec des buts différents, alors comment puis-je combiner à un modèle unique qui contient un IEnumerable liste et un ensemble d'éléments de formulaire qui finira par l'envoyer à la AccountController correctement pour ajouter un enregistrement à la base de données en utilisant le code suivant:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult RecordCard(Weight Model)
{
    if (ModelState.IsValid)
    {
        using (WebApplication1Entities db = new WebApplication1Entities())
        {
            Weight weight = new Weight();
            weight.UserId = User.Identity.GetUserId();
            weight.Stone = Model.Stone;
            weight.Pound = Model.Pound;
            weight.Date = System.DateTime.Now;

            db.Weights.Add(Model);
            db.SaveChanges();
        }
    }
    return View(Model);
}

J'ai inclus dans la catégorie de Poids ci-dessous:

public partial class Weight
{
    public int Id { get; set; }
    public string UserId { get; set; }
    public Nullable<short> Stone { get; set; }
    public Nullable<short> Pound { get; set; }
    public Nullable<System.DateTime> Date { get; set; }
}

Est également ici la WebApplication1Entities classe qui déclare le tableau des Poids aussi Poids:

public partial class WebApplication1Entities : DbContext
{
    public WebApplication1Entities()
        : base("name=WebApplication1Entities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<Weight> Weights { get; set; }
}

Veuillez expliquer ce qui doit être modifié et comment, peu importe ce que j'essaie de lire, de suivre et de mettre en œuvre, j'ai l'impression de manquer quelque chose.

Toute aide serait grandement appréciée 🙂

Vous pourriez veux essayer un MVVM approche, j'ai ajouté une réponse avec l'exemple

OriginalL'auteur iggyweb | 2014-05-08