MVC 5:控制器,数据库和视图有奇怪的行为

时间:2016-05-28 05:42:00

标签: asp.net asp.net-mvc asp.net-mvc-5 entity

所以我有这个小餐馆"餐厅" webapp继续我正在尝试构建一个View页面,用户可以在其中点击创建的(餐厅)表格(点击后自动刷新的下拉菜单)并检查该表格上订购的菜肴。在底部,用户将找到总价。

我的观点100%正常,但仅限数据库中有1个表格。如果我有多个表(餐厅表)(在我的DropCreate-Seed方法中创建),视图将只显示可用表格的下拉列表,而不是其中的菜单。

什么可能导致这个问题?

CODE

 public class Table
    {
        [Required]
        public int Id { get; set; }

        [Required]
        public string Name { get; set; }

        public virtual List<Dish> Dishes { get; set; }
    }

SEED方法

context.Tables.Add(new Table {  Id = 1 ,Name = "table1", Dishes = context.Dishes.ToList() });
            context.Tables.Add(new Table { Id = 2, Name = "table2", Dishes = context.Dishes.ToList() });
            context.Tables.Add(new Table { Id = 3, Name = "table3", Dishes = context.Dishes.ToList() });
            context.SaveChanges();

TABLE CONTROLLER

public ActionResult Order(int? tableID)
        {
            //Create a ViewBag variable contained with all the tables (show name)
            List<table> tableL = db.tables.ToList();
            List<SelectListItem> tableSL = new List<SelectListItem>();
            foreach (var table in tableL)
            {
                TableSL.Add(new SelectListItem { Text = table.Name.ToLower(), Value = table.Name.ToString() });
            }
            ViewBag.tableL = tableSL;

            //At the start or at problems, get the first table and return it
            if (tableID == null || db.tables.Find(tableID) == null)
            {
                return View(db.tables.First());
            }
            else
            {
                Table l = db.tables.Find(tableID);
                return View(l);
            }     
        }

查看

@model VBExamenTEST.Models.Table
@{
    ViewBag.Title = "Order";
}

<h2>Order</h2>

@using (Html.BeginForm("Bedien", "Bedien", FormMethod.Post))
{
    @Html.DropDownList("tableID", (List<SelectListItem>)ViewBag.TableL, new {onchange = "this.form.submit()" });
}

@if(Model != null)
{
    double total = 0;
    <table>
        <tr>
            @foreach(var g in Model.Dishes)
            {
                total += g.Price;
                <td>
                    @Html.DisplayFor(Model=>g.Name)
                </td>
            }
        </tr>
    </table>
    <p>Total:@total euro </p>
}

因此,如果我的数据库中只添加了一个表格,只要显示下拉菜单,点击时不显示菜肴,总数等于0,我的代码就能完美运行。

我的问题在哪里?

0 个答案:

没有答案