日期:2014-05-18  浏览次数:20385 次

MVC学习遇到的错误
控制器:
public ActionResult Release()
  {
  ICategoryService Cser = ServiceBuilder.BuildCategoryService();
  IList<CategoryInfo> Categorys = Cser.GetAll();
  ViewData["Categorys"] = new SelectList(Categorys, "ID", "Name");
  return View();
  }

页面:
<h1>MVC公告发布系统——发布公告</h1>
  <% Html.BeginForm("DoRelease","Announce",FormMethod.Post); %>
  <dl>
  <dt>标题:</dt>
  <dd><%= Html.TextBox("Title") %></dd>
  <dt>分类:</dt>
  <dd><%= Html.DropDownList("Category", categories)%></dd>
  <dt>内容:</dt>
  <dd><%= Html.TextArea("Content") %></dd>
  </dl>
  <input type="submit" value="发布" />
  <% Html.EndForm(); %>

错误:

不存在具有键“Category”的“IEnumerable<SelectListItem>”类型的 ViewData 项。 
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidOperationException: 不存在具有键“Category”的“IEnumerable<SelectListItem>”类型的 ViewData 项。

源错误: 


行 17: <dd><%= Html.TextBox("Title") %></dd>
行 18: <dt>分类:</dt>
行 19: <dd><%= Html.DropDownList("Category", categories)%></dd>
行 20: <dt>内容:</dt>
行 21: <dd><%= Html.TextArea("Content") %></dd>
 



------解决方案--------------------
<dd><%= Html.DropDownList("Category", categories)%></dd>
Category修改为Categorys试试
------解决方案--------------------
<dd><%= Html.DropDownList("Category", categories)%></dd>
Category修改为Categorys试试
------解决方案--------------------
为什么不用后台的ViewData来绑定Dropdownlist呢?奇怪,你是不是刚学mvc?

<dd><%= Html.DropDownList("Category", ViewData["Categorys"] as SelectList)%></dd>
 
------解决方案--------------------
<h1>MVC公告发布系统——发布公告</h1>
<% Html.BeginForm("DoRelease","Announce",FormMethod.Post); %>
<dl>
<dt>标题:</dt>
<dd><%= Html.TextBox("Title") %></dd>
<dt>分类:</dt>
<dd><%= Html.DropDownList("Category", viewdata["Categorys"] as SelectList)%></dd>
<dt>内容:</dt>
<dd><%= Html.TextArea("Content") %></dd>
</dl>
<input type="submit" value="发布" />
<% Html.EndForm(); %>