2013-02-21 77 views
0

请给我一些答案!我总是有这个麻烦! 这是我的控制器:将一个SelectList值绑定到Post Action

public ActionResult Create() 
     { 
      IEnumerable<SelectListItem> items = 
      _categoryService.GetAllCategory().Select(c => new SelectListItem 
      { 
       Value = c.Id.ToString(), 
       Text = c.Name 
      }); 


      ViewBag.Categories = items; 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult Create(ProductViewModel productViewModel,Guid categoryId) 
     { 
      if (ModelState.IsValid) 
      { 
       _productService.Create(productViewModel); 
      } 
      return View(); 
     } 

这是我的看法:

@model Statos.Service.Products.ProductViewModel 
@{ 
    ViewBag.Title = "Create"; 
} 
<fieldset> 
    @using (Html.BeginForm()) 
    { 
     <div> 
      @Html.LabelFor(product => product.Name) 
      @Html.TextBoxFor(Product => Product.Name) 
     </div> 
     <div> 
      @Html.LabelFor(product => product.Brand) 
      @Html.TextBoxFor(product => product.Brand) 
     </div> 
     <div> 
      @Html.LabelFor(product => product.Category) 
      @Html.DropDownList("categoryId", (IEnumerable<SelectListItem>)ViewBag.Categories) 
     </div> 

     <div> 
      @Html.LabelFor(product => product.Price) 
      @Html.TextBoxFor(product => product.Price) 
     </div> 
     <div> 
      @Html.LabelFor(product => product.Description) 
      @Html.TextBoxFor(product => product.Description) 
     </div> 

     <div> 
      <input type="submit" value="Add" /> 
     </div> 
    } 
</fieldset> 

现在我怎样才能绑定类别才能发布行动,提交页面后,我得到这个错误: “没有的ViewData具有'categoryId'键的'IEnumerable'类型的项目。 那我该怎么办?你是以下

回答

0

过程是不正确的 这里是如何将查找控制器,这是从我目前正在运行的项目

public ActionResult Create() 
     { 

      var model = new UserCreateViewModel 
          { 
           Roles = new SelectList(GetRoles(), "Id", "Name"), 
           Ranks = new SelectList(GetRanks(), "Id", "Name") 
          }; 

      return View(model); 
     } 

鉴于它会有点像这个

<div class="control-group"> 
      <div class="controls"> 
       <div class="editor-label span4 pull-left nomargin"> 
        @Html.LabelFor(m => m.Roles) 
       </div> 
       <div class="editor-field"> 
        @Html.DropDownListFor(m => m.User.RoleId, @roles, Index.SelectRole) 
        @Html.ValidationMessageFor(m => m.User.RoleId) 
       </div> 
      </div> 
     </div>