Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc mvc 4带类别的下拉列表_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

Asp.net mvc mvc 4带类别的下拉列表

Asp.net mvc mvc 4带类别的下拉列表,asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,如何在视图中插入带有类别的dropdownlist 我有一个模型 public class IdeaModel { [Required] [Display(Name = "Idea tilte")] [StringLength(250, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] public stri

如何在视图中插入带有类别的
dropdownlist

我有一个模型

public class IdeaModel
{
    [Required]
    [Display(Name = "Idea tilte")]
    [StringLength(250, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    public string IdeaTilte { get; set; }

    [Required]
    [Display(Name = "CategoryName")]
    public string CategoryName { get; set; }

    [Required]
    [Display(Name = "CategoryID")]
    public int CategoryID { get; set; }

    [Display(Name = "Main content")]
    [DataType(DataType.MultilineText)]
    [StringLength(1000, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 30)]
    public string Content { get; set; }
}
我的视图(我想要一个dropdownlist,而不是CategoryName和CategoryID的TextBox)

@model TakesCare.Models.IdeaModel
@使用(Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary()
@查看包。状态
添加一个想法
  • @Html.LabelFor(m=>m.IdeaTilte) @Html.TextBoxFor(m=>m.IdeaTilte)
  • //一个dropdownlist,而不是CategoryName和CategoryID的TextBox
  • @LabelFor(m=>m.CategoryName) @Html.TextBoxFor(m=>m.CategoryName)
  • @LabelFor(m=>m.CategoryID) @Html.TextBoxFor(m=>m.CategoryID)
  • *@
  • @LabelFor(m=>m.Content) @EditorFor(m=>m.Content)
  • }
    我有以下几类:

    “Cat1”,id=1

    “Cat2”,id=2

    “Cat3”,id=3

    我的第一个问题是-我应该将这些数据存储在哪里?(类别名称和ID)
    在my
    IdeaModel


    第二个问题是-如何在
    dropdownlist
    中显示我的所有类别-然后,如何从这个
    dropdownlist
    中获取HttpPost中的ID值?最简单的解决方案是什么?

    您也可以在数据库中有一个表来存储您的dropdownlist访问该表(或)

    将模型特性定义为模型中的类别,如下所示:

    public IEnumerable<SelectListItem> Categories
            {
                get
                {
                    return new[]
                    {
                        new SelectListItem { Value = "1", Text = "Cat1"},
                        new SelectListItem { Value = "2", Text = "Cat2" },
                        new SelectListItem { Value = "3", Text = "Cat3" }
                    };
                }
            }
    

    发布数据时,您将在模型的CategoryId属性中收到您的id

    我建议您在ViewBag中创建一个SelectList,您可以调用它来填充下拉列表。。。它将显示您的类别名称并返回您的类别ID

    在控制器中:

    var categories = db.IdeaModel.OrderBy(CategoryName);
    SelectList categoryList = new SelectList(categories, "CategoryId", "CategoryName");
    viewBag.categoryList = categoryList;
    
    他认为:

    @Html.DropDownListFor(m=>m.CategoryId, @ViewBag.categoryList)
    

    错误NullReferenceException here
    @Html.DropDownListFor(m=>m.CategoryID,Model.Categories
    类别是否定义为视图模型上的公共属性?
    var categories = db.IdeaModel.OrderBy(CategoryName);
    SelectList categoryList = new SelectList(categories, "CategoryId", "CategoryName");
    viewBag.categoryList = categoryList;
    
    @Html.DropDownListFor(m=>m.CategoryId, @ViewBag.categoryList)