相关数据未显示asp.net c#
阅读本教程后,我创建了一些模型、控制器和视图 食谱在视图中显示得很好,但我无法让照片显示出来 RecipeModel相关数据未显示asp.net c#,c#,asp.net-mvc,related-content,C#,Asp.net Mvc,Related Content,阅读本教程后,我创建了一些模型、控制器和视图 食谱在视图中显示得很好,但我无法让照片显示出来 RecipeModel public class RecipeModel { [Key] public int RecipeId { get; set; } public string Name { get; set; } public string Description { get; set; } public string ImageUrl { get;
public class RecipeModel
{
[Key]
public int RecipeId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string ImageUrl { get; set; }
public virtual ICollection<RecipeLine> RecipeLines { get; set; }
}
RecipeViewModel
public class RecipeViewModel
{
public IEnumerable<RecipeModel> RecipeModels { get; set; }
public IEnumerable<RecipeLine> RecipeLines { get; set; }
}
那景色呢
@model RecipeApplication.Models.RecipeViewModel
@{
ViewBag.Title = "Recepten";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
Naam
</th>
<th>
Omschrijving
</th>
<th>
Afbeelding
</th>
</tr>
@foreach (var item in Model.RecipeModels) {
string selectedRow = "";
if(item.RecipeId == ViewBag.RecipeId)
{
selectedRow = "success";
}
<tr class="@selectedRow" valign="top">
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@if (item.ImageUrl != null)
{
@Html.DisplayFor(modelItem => item.ImageUrl)
}
</td>
<td>
@Html.ActionLink("Select", "Index", new { id = item.RecipeId}) |
@Html.ActionLink("Edit", "Edit", new { id=item.RecipeId }) |
@Html.ActionLink("Details", "Details", new { id=item.RecipeId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.RecipeId })
</td>
</tr>
}
</table>
@if (Model.RecipeLines != null)
{
foreach (var item in Model.RecipeLines)
{
string selectedRow = "";
if (item.RecipeId == ViewBag.id)
{
<p>@item.Quantity @item.UnitOfMeasure @item.Ingredient</p>
}
}
}
@model RecipeApplication.Models.RecipeViewModel
@{
ViewBag.Title=“Recepten”;
}
指数
@ActionLink(“新建”、“创建”)
纳姆
OMSCHRIJING
阿弗比尔丁
@foreach(Model.RecipeModels中的var项){
字符串selectedRow=“”;
if(item.RecipeId==ViewBag.RecipeId)
{
selectedRow=“成功”;
}
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Description)
@如果(item.ImageUrl!=null)
{
@DisplayFor(modelItem=>item.ImageUrl)
}
@ActionLink(“选择”,“索引”,新的{id=item.RecipeId})|
@ActionLink(“编辑”,“编辑”,新的{id=item.RecipeId})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.RecipeId})|
@ActionLink(“删除”,“删除”,新的{id=item.RecipeId})
}
@if(Model.RecipeLines!=null)
{
foreach(模型RecipeLines中的var项目)
{
字符串selectedRow=“”;
if(item.RecipeId==ViewBag.id)
{
@item.Quantity@item.UnitOfMeasure@item.Component
}
}
}
当选择配方时,行的颜色是正确的,我在URL字符串中看到一个id值
如果有人能帮上忙,那就太棒了 您正在将
item.RecipeId
与不存在的ViewBag.id
进行比较。在控制器操作中设置的ViewBag
成员是ViewBag.RecipeId
但是,您根本不需要这个条件。所有配方行都已用于该配方id,因为您只在模型中专门设置了那些配方项。RecipeLines
//更改控制器操作
//change your controller action
[HttpGet]
public ActionResult Index(int? id)
{
if(id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
var model = new RecipeViewModel();
var data = db.RecipeModel.Include(i => i.RecipeLines)
.Where(x=>x.RecipeId == id)
.ToList();
model.RecipeModels = data;
return View(model);
}
//change your viewModel
public class RecipeViewModel
{
public IEnumerable<RecipeModel> RecipeModels { get; set; }
}
//this is in the view
@if (Model.RecipeLines != null)
{
foreach (var item in Model.RecipeModels.RecipeLines)
{
<p>
@item.Quantity
@item.UnitOfMeasure
@item.Ingredient
</p>
}
}
[HttpGet]
公共行动结果索引(int?id)
{
if(id==null)返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
var模型=新的RecipeViewModel();
var data=db.RecipeModel.Include(i=>i.RecipeLines)
.其中(x=>x.RecipeId==id)
.ToList();
model.RecipeModels=数据;
返回视图(模型);
}
//更改您的viewModel
公共类RecipeViewModel
{
公共IEnumerable RecipeModels{get;set;}
}
//这是我们的看法
@if(Model.RecipeLines!=null)
{
foreach(模型.RecipeModels.RecipeLines中的var项)
{
@项目.数量
@项目1.计量单位
@项目.配料
}
}
所以基本上你是说你不知道这是怎么回事……谷歌导航属性。。。。例如“公共虚拟ICollection RecipeLines{get;set;}”在示例代码中找到它。。。。然后。。你认为“db.Recipes.Include(i=>i.RecipeLines)”有什么作用?很抱歉,您对框架的了解不足令人担忧。@JamieD77不,它有“RecipeModels”,它有一个指向“RecipeLines”的EF导航,这就是框架的工作方式。@JamieD77检查了它的正确性,我不知道如何接受您最后的评论。是的,如果问题是这样的话,它会起作用的。做了一次更正,不知道这是不是你在说的?让我们。
@model RecipeApplication.Models.RecipeViewModel
@{
ViewBag.Title = "Recepten";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
Naam
</th>
<th>
Omschrijving
</th>
<th>
Afbeelding
</th>
</tr>
@foreach (var item in Model.RecipeModels) {
string selectedRow = "";
if(item.RecipeId == ViewBag.RecipeId)
{
selectedRow = "success";
}
<tr class="@selectedRow" valign="top">
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@if (item.ImageUrl != null)
{
@Html.DisplayFor(modelItem => item.ImageUrl)
}
</td>
<td>
@Html.ActionLink("Select", "Index", new { id = item.RecipeId}) |
@Html.ActionLink("Edit", "Edit", new { id=item.RecipeId }) |
@Html.ActionLink("Details", "Details", new { id=item.RecipeId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.RecipeId })
</td>
</tr>
}
</table>
@if (Model.RecipeLines != null)
{
foreach (var item in Model.RecipeLines)
{
string selectedRow = "";
if (item.RecipeId == ViewBag.id)
{
<p>@item.Quantity @item.UnitOfMeasure @item.Ingredient</p>
}
}
}
//change your controller action
[HttpGet]
public ActionResult Index(int? id)
{
if(id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
var model = new RecipeViewModel();
var data = db.RecipeModel.Include(i => i.RecipeLines)
.Where(x=>x.RecipeId == id)
.ToList();
model.RecipeModels = data;
return View(model);
}
//change your viewModel
public class RecipeViewModel
{
public IEnumerable<RecipeModel> RecipeModels { get; set; }
}
//this is in the view
@if (Model.RecipeLines != null)
{
foreach (var item in Model.RecipeModels.RecipeLines)
{
<p>
@item.Quantity
@item.UnitOfMeasure
@item.Ingredient
</p>
}
}