无法从视图模型控制器获取数据到视图,我已正确检查 LINQpad 中查询的工作情况。但是我缺少可以在视图中显示的查询输出的转换。
我有三个数据模型产品、图像、规格,我将它们合并到仅具有选定属性的 ViewModel 中,并希望显示相同的内容。
public class ViewModelController : Controller
{
private OMSEntities db = new OMSEntities();
// GET: ViewModel
public ActionResult Index()
{
var product = new Product();
var prices = new Price();
var orders = new Order();
ProductRegistrationViewModelVM vm = new ProductRegistrationViewModelVM();
vm =(from p in db.Products
join i in db.Images on p.ProductId equals i.Product_Id
join s in db.Specifications on p.ProductId equals s.Product_Id
select new
{
//Product
p.Name,
p.Produt_Code,
p.Description,
//Image
i.Image_Description,
i.Image_Name,
i.image1,
//Specifications
s.Sz_Measurement_Unit,
s.Size,
s.Wg_Measurement_Unit,
s.Weight,
s.Price_Set,
s.Price_Sold
});
vm.Add(new ProductRegistrationViewModelVM());
return View(vm.ToList());
}
视图模型类
public class ProductRegistrationViewModelVM
{
//Products
public int ProductId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Produt_Code { get; set; }
public Nullable<int> Supplier_Id { get; set; }
public IEnumerable<Supplier> Supplier { get; set; }
//Image
public string Image_Description { get; set; }
public string Image_Name { get; set; }
public byte[] image1 { get; set; }
//Specifications
public string Sz_Measurement_Unit { get; set; }
public Nullable<decimal> Size { get; set; }
public string Size_Name { get; set; }
public string Wg_Measurement_Unit { get; set; }
public Nullable<decimal> Weight { get; set; }
public Nullable<int> Price_Set { get; set; }
public Nullable<int> Price_Sold { get; set; }
}
Note:我确实研究了堆栈溢出中的相同错误问题但是无法弄清楚。
错误CS0266无法隐式转换类型'System.Linq.IQueryable >' 到 'OMS.ViewModels.ProductRegistrationViewModelVM'。存在显式转换(您是否缺少强制转换?)
Fix:
如下所示,ProductRegistrationViewModelVM 被制作为列表项,并且 ViewModel 属性也绑定到查询属性。
public ActionResult Index()
{
var product = new Product();
var prices = new Price();
var orders = new Order();
List<ProductRegistrationViewModelVM> vm = new List<ProductRegistrationViewModelVM>();
vm= (from p in db.Products
join i in db.Images on p.ProductId equals i.Product_Id
join s in db.Specifications on p.ProductId equals s.Product_Id
select new ProductRegistrationViewModelVM()
{
//Product
Name=p.Name,
Produt_Code= p.Produt_Code,
Description = p.Description,
//Image
Image_Description= i.Image_Description,
Image_Name= i.Image_Name,
image1= i.image1,
//Specifications
Sz_Measurement_Unit= s.Sz_Measurement_Unit,
Size= s.Size,
Wg_Measurement_Unit=s.Wg_Measurement_Unit,
Weight=s.Weight,
Price_Set=s.Price_Set,
Price_Sold= s.Price_Sold
}).ToList();
return View(vm);
}