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)