我尝试从我的两个表中获取所有数据但是我有很多编译问题。你知道它在哪里有问题吗?另外我想在这里声明两个表返回“View(repository.Towar);”现在是可见的,但我不知道我该怎么做这个“se.Towar_zakupiony”。
我自己找到了解决方案:
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SportsStore.Abstract;
using SportsStore.Entities;
namespace SportsStore.WebUI.Controllers
{
public class ProductController : Controller
{
//
// GET: /Product/
public ITowarRepository repository;
public IKategorieRepository re;
public ProductController(ITowarRepository productRepository, IKategorieRepository kategorie)
{
repository = productRepository;
re = kategorie;
}
public ViewResult List()
{
SomeViewModel viewModel = new SomeViewModel
{
Towar = repository.Towar
.OrderBy(p => p.Id_tow),
Kategorie = re.Kategorie
.OrderBy(p => p.Id_kat)
};
return View(viewModel);
}
}
}
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SportsStore.Entities
{
public class SomeViewModel
{
public IEnumerable<SportsStore.Entities.Towar> Towar { get; set; }
public IEnumerable<SportsStore.Entities.Kategorie> Kategorie { get; set; }
public IEnumerable<SportsStore.Entities.Zdjecie> Zdjecie { get; set; }
public IEnumerable<SportsStore.Entities.Typ_zdjecia> Typ_zdjecia { get; set; }
public IEnumerable<SportsStore.Entities.Zakup> Zakup { get; set; }
public IEnumerable<SportsStore.Entities.Adres> Adres { get; set; }
public IEnumerable<SportsStore.Entities.Status> Status { get; set; }
public IEnumerable<SportsStore.Entities.Towar_Zakupiony> Towar_zakupiony { get; set; }
}
}
代码:
@model SportsStore.Entities.SomeViewModel
@{
ViewBag.Title = "List";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>List</h2>
@foreach (var p in Model.Towar)
{
<div class="item">
<h3>@p.Nazwa</h3>
@p.Opis
<h4>@p.Cena.ToString("c")</h4>
</div>
}
<h2>List</h2>
@foreach (var b in Model.Kategorie)
{
<div class="item">
<h3>@b.Nazwa</h3>
</div>
}
答案 0 :(得分:1)
您的观点期待控制器作为模型:
@model SportsStore.WebUI.Controllers.ProductController
将其更改为
@model <WhateverTypeYourRepo(repository.Towar)IsReturning>
似乎是DbSet,那么您需要相应地更新您的视图。
也许您应该考虑使用viewmodel,有关详细信息,请参阅此相关Stack Overflow post。不建议您将整个控制器传递给视图。
答案 1 :(得分:1)
看起来您的repositary.Towar
属性返回Towar对象的集合。所以你的观点应该与那个
@model IEnumerable<Towar>
@{
ViewBag.Title = "List";
}
<h2>List</h2>
@foreach (var p in Model)
{
<div class="item">
<h3>@p.Nazwa</h3>
@p.Opis
<h4>@p.Cena.ToString("c")</h4>
</div>
}
假设Naszwa
和Cena
是Towar
类的两个属性
建议:我个人认为您的代码可以更好阅读。
1)我会在Repositary中编写一个方法,返回Collection
个Towar
这样的目标
public IList<Towar> GetAllTowars();
您可以在Implementation类中实现它以返回Towar对象的List。实施(获取数据取决于您)
在我的控制器中,我会像这样称呼它
var towerList=repo.GetAllTowars();
retuen View(towerList);