Zwei Modell kombiniert zu kombinieren, hat im Hinblick auf existierenwie mit zwei Modellen in der Ansicht (ASP.net MVC)
1. ~/Products.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ShoppingStore.Domain.Entities
{
public class Product
{
public int ProductID { get; set;}
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
}
2. ~/PorductListViewModel. cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ShoppingStore.Domain.Entities;
namespace ShoppingStore.WebUI.Models
{
public class ProductsListViewModel
{
public IEnumerable<Product> Products { get; set; }
public PagingInfo PageInfo { get; set; }
public string CurrentCategory { get; set; }
}
}
3.Control ~/ProductController.cs public Viewresult List (String Kategorie, int page = 1)
{
ProductsListViewModel model = new ProductsListViewModel
{
Products = repository.Products.Where(p => category ==null || p.Category ==category).OrderBy(p => p.ProductID).Skip((page - 1) * PageSize).Take(PageSize),
PageInfo = new PagingInfo {CurentPage = page,ItemPerPage = PageSize,TotalItems = category == null ? repository.Products.Count() : repository.Products.Where(e => e.Category == category).Count()},
CurrentCategory = category
};
return View(model);
}
Ich benutze diese Art und Weise Multiple models in a view
und fügen Sie zwei Modelle in einem Modell
1. ~/MainPageModel.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ShoppingStore.Domain.Entities;
namespace ShoppingStore.WebUI.Models
{
public class MainPageModel
{
public ProductsListViewModel ProductsListViewModel { get; set; }
public Product Product { get; set; }
}
}
und chnage Code wie unten
~/List.cshtml
@model ShoppingStore.WebUI.Models.MainPageModel
@{
ViewBag.Title = "Prodcuts";
}
@foreach (var p in Model.PorductListViewModel.Products)
{
@Html.Partial("ProductSummary",p)
}
<div>
@Html.PageLinks(Model.PorductListViewModel.PageInfo, x => Url.Action("List", new { page = x , category = Model.PorductListViewModel.CurrentCategory }))
</div>
<div>
@using (Html.BeginForm())
{
<div >
@Html.HiddenFor(x => x.Product.ProductID)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)
<input type="submit" value="Add to cart" />
</div>
<div>
<div id='DIV2'><input type="button" onclick="incrementValue1()" value="ADD" /></div>
<div id="DIV2"> <input type="text" id="number1" value="0" /></div>
<div id="DIV2"><input type="button" onclick="decrementValue1()" value="minus" /></div>
</div>
<button id="checkvalue" onclick="checkValue()" type="submit">Check</button>
</div>
}
Beim Ausführen, IIS haben unten Fehlermeldung.
Das Modellelement in das Wörterbuch übergeben ist vom Typ ‚ShoppingStore.WebUI.Models.ProductsListViewModel‘, aber dieses Wörterbuch erfordert ein Modell Artikel vom Typ ‚ShoppingStore.WebUI.Models.MainPageModel‘.
warum haben diese Fehlermeldung
Wie Sie die Ansicht rufen Sie? Von einem Controller? Aus anderer Sicht? Zeigen Sie uns den relevanten Code. Aber das Problem ist einfach, Sie müssen etwas tun, wie 'return View (" List ", neue ProductsListViewModel())' anstelle von 'return View (" List ", neue MainPageModel())' – Rumpelstinsk
Teilen Sie Ihre Controller-Rückgabe View() Details –
Der Fehler ist selbsterklärend wirklich das erforderliche Modell ist ShoppingStore.WebUI.Models.MainPageModel und Sie verwenden ShoppingStore.WebUI.Models.ProductsListViewModel in Ihrer Ansicht, Ändern Sie das Modell durch den Controller übergeben und einige Arten von Mapping –