Asp.net mvc MVC 3使用@model两次
我想使用两次@model从我网站的另一部分获取数据,有可能吗?因为现在我有错误,但如果我只有第一个@model,一切都正常 看-> 错误2“SportsStore.Entities.Kategorie”不包含“Opis”的定义,并且找不到接受“SportsStore.Entities.Kategorie”类型的第一个参数的扩展方法“Opis”(是否缺少using指令或程序集引用?)c:\Users\Rafal\Desktop\MVC ksiązka\moj projekt\sklep\sportstore.WebUI\Views\Product\List.cshtml 16 4 sportstore.WebUIAsp.net mvc MVC 3使用@model两次,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我想使用两次@model从我网站的另一部分获取数据,有可能吗?因为现在我有错误,但如果我只有第一个@model,一切都正常 看-> 错误2“SportsStore.Entities.Kategorie”不包含“Opis”的定义,并且找不到接受“SportsStore.Entities.Kategorie”类型的第一个参数的扩展方法“Opis”(是否缺少using指令或程序集引用?)c:\Users\Rafal\Desktop\MVC ksiązka\moj projekt\sklep\sport
@model IEnumerable
@模型IEnumerable
@{
ViewBag.Title=“列表”;
}
列表
@foreach(模型中的var p)
{
@p、 纳兹瓦
@p、 奥皮斯
@p、 Cena.ToString(“c”)
}
每个视图只能有一个模型。但您可以使用另一个对象来声明模型:
public class SomeViewModel
{
public IEnumerable<Towar> Towars;
public IEnumerable<Category> Categories;
public SomeViewModel(IEnumerable<Towar> towars, IEnumerable<Category> categories) {
Towars = towars;
Categories = categories;
}
}
公共类SomeViewModel
{
公众可数拖车;
公共可数范畴;
公共SomeViewModel(IEnumerable towars、IEnumerable categories){
拖缆=拖缆;
类别=类别;
}
}
然后在您的视图中使用它,如下所示:
@model SportsStore.Entities.SomeViewModel
@foreach (var item in Model.Towars)
{
<div class="item">
<h3>@p.Nazwa</h3>
@p.Opis
<h4>@p.Cena.ToString("c")</h4>
</div>
}
@foreach (var item in Model.Categories) {
@item.Name @* or what you need down here *@
}
using SportsStore.Entities;
public class YourViewModel
{
public IEnumerable<Towar> Towars { get; set; }
public IEnumerable<Kategorie> Categories { get; set; } // I assume this is categories
}
public class YourController : Controller
{
private readonly ITowarRepository towarRepository;
private readonly ICategoryRepository categoryRepository;
public YourController(ITowarRepository towarRepository, ICategoryRepository categoryRepository)
{
this.towarRepository = towarRepository;
this.categoryRepository = categoryRepository;
}
public ActionResult Create()
{
YourViewModel viewModel = new YourViewModel
{
Towars = towarRepository.GetAll(),
Categories = categoryRepository.GetAll()
};
return View(viewModel);
}
}
@model sportstore.Entities.SomeViewModel
@foreach(Model.Towars中的var项)
{
@p、 纳兹瓦
@p、 奥皮斯
@p、 Cena.ToString(“c”)
}
@foreach(Model.Categories中的var项){
@item.Name@*或您需要的东西*@
}
我还建议您在MVC中使用英文名称。阅读和理解更清晰;) 每个视图只能有一个模型。但您可以使用另一个对象来声明模型:
public class SomeViewModel
{
public IEnumerable<Towar> Towars;
public IEnumerable<Category> Categories;
public SomeViewModel(IEnumerable<Towar> towars, IEnumerable<Category> categories) {
Towars = towars;
Categories = categories;
}
}
公共类SomeViewModel
{
公众可数拖车;
公共可数范畴;
公共SomeViewModel(IEnumerable towars、IEnumerable categories){
拖缆=拖缆;
类别=类别;
}
}
然后在您的视图中使用它,如下所示:
@model SportsStore.Entities.SomeViewModel
@foreach (var item in Model.Towars)
{
<div class="item">
<h3>@p.Nazwa</h3>
@p.Opis
<h4>@p.Cena.ToString("c")</h4>
</div>
}
@foreach (var item in Model.Categories) {
@item.Name @* or what you need down here *@
}
using SportsStore.Entities;
public class YourViewModel
{
public IEnumerable<Towar> Towars { get; set; }
public IEnumerable<Kategorie> Categories { get; set; } // I assume this is categories
}
public class YourController : Controller
{
private readonly ITowarRepository towarRepository;
private readonly ICategoryRepository categoryRepository;
public YourController(ITowarRepository towarRepository, ICategoryRepository categoryRepository)
{
this.towarRepository = towarRepository;
this.categoryRepository = categoryRepository;
}
public ActionResult Create()
{
YourViewModel viewModel = new YourViewModel
{
Towars = towarRepository.GetAll(),
Categories = categoryRepository.GetAll()
};
return View(viewModel);
}
}
@model sportstore.Entities.SomeViewModel
@foreach(Model.Towars中的var项)
{
@p、 纳兹瓦
@p、 奥皮斯
@p、 Cena.ToString(“c”)
}
@foreach(Model.Categories中的var项){
@item.Name@*或您需要的东西*@
}
我还建议您在MVC中使用英文名称。阅读和理解更清晰;) 我认为创建一个ViewModel(组合您拥有的两个实体)然后基于该ViewModel创建一个视图是可行的。我认为创建一个ViewModel(组合您拥有的两个实体)然后基于该ViewModel创建一个视图是可行的。最好创建一个视图模型来表示您的数据。视图模型必须仅包含需要在视图上显示的内容。任何没有被使用的东西你都可以移除,没有存在的意义。您的视图模型可以如下所示:
@model SportsStore.Entities.SomeViewModel
@foreach (var item in Model.Towars)
{
<div class="item">
<h3>@p.Nazwa</h3>
@p.Opis
<h4>@p.Cena.ToString("c")</h4>
</div>
}
@foreach (var item in Model.Categories) {
@item.Name @* or what you need down here *@
}
using SportsStore.Entities;
public class YourViewModel
{
public IEnumerable<Towar> Towars { get; set; }
public IEnumerable<Kategorie> Categories { get; set; } // I assume this is categories
}
public class YourController : Controller
{
private readonly ITowarRepository towarRepository;
private readonly ICategoryRepository categoryRepository;
public YourController(ITowarRepository towarRepository, ICategoryRepository categoryRepository)
{
this.towarRepository = towarRepository;
this.categoryRepository = categoryRepository;
}
public ActionResult Create()
{
YourViewModel viewModel = new YourViewModel
{
Towars = towarRepository.GetAll(),
Categories = categoryRepository.GetAll()
};
return View(viewModel);
}
}
在你看来:
@model YourProject.DomainModel.ViewModels.YourViewModel
@foreach (var towar in Model.Towars)
{
// Do whatever
}
@foreach (var category in Model.Categories)
{
// Do whatever
}
最好创建一个视图模型来表示数据。视图模型必须仅包含需要在视图上显示的内容。任何没有被使用的东西你都可以移除,没有存在的意义。您的视图模型可以如下所示:
@model SportsStore.Entities.SomeViewModel
@foreach (var item in Model.Towars)
{
<div class="item">
<h3>@p.Nazwa</h3>
@p.Opis
<h4>@p.Cena.ToString("c")</h4>
</div>
}
@foreach (var item in Model.Categories) {
@item.Name @* or what you need down here *@
}
using SportsStore.Entities;
public class YourViewModel
{
public IEnumerable<Towar> Towars { get; set; }
public IEnumerable<Kategorie> Categories { get; set; } // I assume this is categories
}
public class YourController : Controller
{
private readonly ITowarRepository towarRepository;
private readonly ICategoryRepository categoryRepository;
public YourController(ITowarRepository towarRepository, ICategoryRepository categoryRepository)
{
this.towarRepository = towarRepository;
this.categoryRepository = categoryRepository;
}
public ActionResult Create()
{
YourViewModel viewModel = new YourViewModel
{
Towars = towarRepository.GetAll(),
Categories = categoryRepository.GetAll()
};
return View(viewModel);
}
}
在你看来:
@model YourProject.DomainModel.ViewModels.YourViewModel
@foreach (var towar in Model.Towars)
{
// Do whatever
}
@foreach (var category in Model.Categories)
{
// Do whatever
}