用外键插入表格?

时间:2012-04-11 19:38:16

标签: database asp.net-mvc entity-framework

在我的Addcar视图中,我有表格允许我将数据插入我的数据库(表Car)。

在表Car中我colonne (Idcat)它的外键与Categorie表相关。

所以在我的添加表单中,我应该有一个dropDownlist,允许用户选择他想要添加的汽车的类别。

这是我观点的一部分:

             <div class="editor-label">
    <p>
        <%: Html.LabelFor(model => model.Idcat) %>
    </p>
    </div>
    <div class="editor-field">
    <p>
    <!-- in this dropDownList i want to show the all Name Of Marque in my forgien table and user when he select value wil be set at id of selected marque -->
        <%: Html.DropDownListFor(model => model.Idcat, ViewBag.cat as SelectList)%>
        <%: Html.ValidationMessageFor(model => model.Idcat) %>
    </p>
    </div>

这是我的控制器动作:

        public ActionResult addcar()
    {

        ViewBag.cat = new SelectList(entity.categorie, "Idcat", "Nom"); 

        return View();
    }

这项工作很好,直到我开始创建他在此行显示此错误There is no ViewData item of type 'IEnumerable <SelectListItem>' with key 'Idcat'. <%: Html.DropDownListFor(model => model.Idcat, ViewBag.cat as SelectList)%>

2 个答案:

答案 0 :(得分:0)

在ASP.Net MusicStore教程中,您可以从给定的流派列表中进行选择。类型列表通过控制器填充的视图包传递给视图:

MusicStore Tutorial

这可能正是您所寻找的。

答案 1 :(得分:0)

模型绑定实际上只绑定各个元素。所以这是精美的绑定Idmarque。没有帮助显示可能值的下拉列表。对我来说,这似乎是框架中缺少的东西,因为它会让你停止使用EditorForModel。您必须决定如何处理获取下拉列表。您是否可以使用Html Helper查询数据库并绘制选项列表?或者您希望控制器调用模型方法来获取选项列表,并将其作为视图模型的一部分传递到视图中?可能希望避免传递datareader,因为如果这样做可能会出现打开连接问题。