Database 是否使用外键插入到表中?

Database 是否使用外键插入到表中?,database,asp.net-mvc,entity-framework,Database,Asp.net Mvc,Entity Framework,在我的Addcar视图中,我有一个表单,允许我将数据插入数据库(表Car) 在表Car中,我有colonne(Idcat)它是与category表相关的外键 所以在我的添加表单中,我应该有一个下拉列表,允许用户选择他想要添加的汽车的类别 这是我观点的一部分: <div class="editor-label"> <p> <%: Html.LabelFor(model => model.Idcat) %>

在我的
Addcar
视图中,我有一个表单,允许我将数据插入数据库(表
Car

在表
Car
中,我有
colonne(Idcat)
它是与
category
表相关的外键

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

这是我观点的一部分:

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

这项工作正常,直到我在创建时clic他向我显示此错误时为止。
没有带有键“Idcat”的类型为“IEnumerable”的ViewData项。
在这一行
model.Idcat,ViewBag.cat作为SelectList)%%>

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


这可能正是您想要的。

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

本教程对此非常清楚。请参阅“使用ViewBag将信息传递到视图”和“在创建视图中显示下拉列表的HTML帮助程序”部分。在您的情况下,您必须在控制器中获取所有可用的标记,将其传递给视图并从该列表中构建列表。如果这不是您所需要的,那么请更具体一些。我无法将多个模型传递给我的视图,并且我的视图已经在使用模型。汽车,所以我无法传递给它另一个模型。我不明白这一点,抱歉,但是bigner,这是我的第一个应用程序。Razor只是视图文件的另一种语法。控制器是相等的。此外,将Razor语法转换为ASPX应该很容易。主要是关于改变。。到试试看。你可以按说明在ViewBag中传递列表。或者你可以制作一个由汽车模型和IEnumerable组成的视图模型。我已经更新了我的帖子,请查看。
        public ActionResult addcar()
    {

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

        return View();
    }