0

请给我一些答案!我总是有这个烦恼!这是我的控制器:

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>

现在如何将类别绑定到发布操作,在提交页面后出现此错误:“没有具有键 'categoryId' 的 'IEnumerable' 类型的 ViewData 项目”。所以我该怎么做 ?

4

1 回答 1

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>
于 2013-02-28T13:34:25.800 回答