Asp.net mvc 4 无法在mvc 4的部分视图中填充下拉控件

Asp.net mvc 4 无法在mvc 4的部分视图中填充下拉控件,asp.net-mvc-4,Asp.net Mvc 4,我想填充部分视图的下拉控件 这是我的模型: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace HelpDeskSystem.Models { public class CategoryModel { public string CategoryId { get; set; }

我想填充部分视图的下拉控件

这是我的模型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

    namespace HelpDeskSystem.Models
    {
        public class CategoryModel
        {
            public string CategoryId { get; set; }
            public string CategoryName { get; set; }
            public int frequency { get; set; }

         //   public virtual ICollection<SubcategoryModel> subCategory { get; set; }
        }
    }
没有具有键“CategoryId”的“IEnumerable”类型的ViewData项。

有人能告诉我如何填写我的部分视图中的下拉列表吗??


因为我是mvc的初学者

在主视图中,您的模型是@model IEnumerable,但当您调用分部时,您传递的是一个新的CategoryModel,根据定义,该模型将为空。要使数据直接传递到分部,请更改对的分部调用

@Html.Partial("Createcategories", model)
然后,您将需要将您的partial to上的模型更改为

@model IEnumerable<HelpDeskSystem.Models.CategoryModel>
由于您只是在中传递列表,因此没有一个变量可以将所选值绑定到使用DropDownListFor的列表中

通常,您不会只将列表传递给主视图,而直接传递给局部视图。如果有更多数据,可以将列表添加到viewModel

 public class ViewModel
    {
        //other fields used on your main page
        public List<SelectListItem> CategoryList { get; set; }
    }

希望这会有所帮助

非常感谢你的帮助。它很有效。再次感谢你
  @Html.DropDownListFor(Model => Model.CategoryId,null, "Select Category", new { id = "ddlCategory"})
@Html.Partial("Createcategories", model)
@model IEnumerable<HelpDeskSystem.Models.CategoryModel>
@Html.DropDownList("Selected", Model)
 public class ViewModel
    {
        //other fields used on your main page
        public List<SelectListItem> CategoryList { get; set; }
    }
    @Html.Partial("Createcategories", model.CategoryList)