【问题标题】:Error :There is No ViewData错误:没有 ViewData
【发布时间】:2013-10-28 11:06:42
【问题描述】:

我是 mvc4 的新手(asp.net(vb.net), razor engine ).. 这让我很烦。如果我完成表格并提交它,它在负载上完美运行。
它显示以下错误。

没有“iEnumerable”类型的视图数据具有 关键 CustomerGroupId

在控制器中(获取)

 Function Create() As ActionResult
    _Engine = CType(HttpContext.Application("Engine"), Engine)
    ViewBag.CustomerSubGroup = New SelectList(_Engine.RteCustomerSubGroupFactory.CodeFactory.Values)
    ViewBag.RateList = New SelectList(_Engine.RteRateListFactory.Values)
    Return View()
End Function

在视图中(.vbhtml)

<table>
     <tr><td>Code  </td><td>@Html.TextBox("Code")</td></tr>
     <tr><td>Name</td><td>@Html.TextBox("Name")</td></tr>
     <tr><td>Customer Sub Group Name </td><td>@Html.DropDownList("CustomerSubGroupId")</td></tr>
     <tr><td>Rate List</td><td>@Html.DropDownList("RateList")</td></tr>
     <tr><td>IsDisabled</td><td>@Html.CheckBox("IsDisabled")</td></tr>

在行中显示错误

<tr><td>Customer Sub Group Name </td><td>@Html.DropDownList("CustomerSubGroupId")</td></tr>

【问题讨论】:

  • 你不应该在你的视图中使用 CustomerSubGroup 而不是 CustomerSubGroupId 吗?
  • @PmanAce 谢谢qqqq,现在可以正常工作了:)
  • 我认为是“要返回的表单域的名称。”。我想知道即使在加载页面时这将如何工作。我会虽然有 @Html.DropDownList("CustomerSubGroupId", ViewBag.CustomerSubGroup);除非有其他一些脚本以某种方式填充下拉列表 - 我怀疑。
  • @Raj... 它刚刚更新了我在表单中输入的内容。

标签: asp.net .net asp.net-mvc vb.net asp.net-mvc-4


【解决方案1】:

在您的控制器的操作中,您必须添加一个与您在视图上使用的 ID 相同的密钥,以应用于 DropDownList,例如:

ViewBag.CustomerSubGroupId = New SelectList(_Engine.RteCustomerSubGroupFactory.CodeFactory.Values)
ViewBag.RateList = New SelectList(_Engine.RteRateListFactory.Values)
Return View()

在视图中,您可以使用:

@Html.DropDownList("CustomerSubGroupId")

@Html.DropDownList("RateList")

原因是ViewBag 封装了ViewData,这就是为什么消息说您没有 ViewData 上的密钥。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多