Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相关数据未显示asp.net c#_C#_Asp.net Mvc_Related Content - Fatal编程技术网

相关数据未显示asp.net c#

相关数据未显示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;

阅读本教程后,我创建了一些模型、控制器和视图

食谱在视图中显示得很好,但我无法让照片显示出来

RecipeModel

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>
    }
}