0

在我Addcar看来,我有表单允许我将数据插入到我的数据库中(插入到表中Car)。

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

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

这是我观点的一部分:

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

4

2 回答 2

0

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

于 2012-04-11T21:29:23.413 回答
0

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

音乐商店教程

这可能正是您正在寻找的。

于 2012-04-11T19:46:03.540 回答