Tôi đã tìm thấy nhiều bài viết về điều này nhưng tôi vẫn chưa biết chính xác cách thực hiện điều này. Tôi đang cố gắng tạo công cụ blog của riêng mình, tôi có Xem để tạo bài viết (Tôi đang sử dụng EF và Mã đầu tiên) và bây giờ tôi phải điền vào số hạng mục cần thêm nhưng tôi muốn thay đổi nó thành danh sách thả xuống với tên Thể loại. Mô hình của tôi trông như sau:Asp.Net MVC3 - Cách tạo Dynamic DropDownList
public class Article
{
public int ArticleID { get; set; }
[Required]
public string Title { get; set; }
[Required]
public int CategoryID { get; set; }
public DateTime Date { get; set; }
[Required()]
[DataType(DataType.MultilineText)]
[AllowHtml]
public string Text { get; set; }
public virtual Category Category { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
public class Category
{
public int CategoryID { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Article> Articles { get; set; }
}
Tôi biết tôi phải sử dụng Enum (hoặc tôi nghĩ) nhưng tôi không chắc chắn như thế nào. Tôi không biết hướng dẫn nào mà tôi thấy là tốt nhất cho tôi.
Edit:
Cám ơn câu trả lời của bạn, nhưng tôi thấy cái gì khác. Tôi đang cố gắng này:
Đây là mô hình của tôi:
public class Article
{
[Key]
public int ArticleID { get; set; }
[Display(Name = "Title")]
[StringLength(30, MinimumLength = 5)]
[Required]
public string Title { get; set; }
public DateTime Date { get; set; }
public int CategoryID { get; set; }
[Required()]
[DataType(DataType.MultilineText)]
[AllowHtml]
public string Text { get; set; }
public Category Category { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public IEnumerable<Category> Categories { get; set; }
}
public class Category
{
[Key]
public int CategoryId { get; set; }
[Required]
public string CategoryName { get; set; }
public virtual ICollection<Article> Articles { get; set; }
}
Đây là bộ điều khiển của tôi để tạo bài viết:
public ActionResult Vytvorit()
{
IEnumerable<Category> categories = GetCaregories();
var view = View(new Article() { Categories = categories });
view.TempData.Add("Action", "Create");
return view;
}
private static IEnumerable<Category> GetCaregories()
{
IEnumerable<Category> categories;
using (BlogDBContext context = new BlogDBContext())
{
categories = (from one in context.Categories
orderby one.CategoryName
select one).ToList();
}
return categories;
}
private Category GetCategory(int categoryID)
{
return db.Categories.Find(categoryID);
}
//
// POST: /Clanky/Vytvorit
[HttpPost]
public ActionResult Vytvorit(Article newArticle)
{
try
{
if (newArticle.CategoryID > 0)
{
newArticle.Category = GetCategory(newArticle.CategoryID);
}
if (TryValidateModel(newArticle))
{
db.Articles.Add(newArticle);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
newArticle.Categories = GetCaregories();
var view = View(newArticle);
view.TempData.Add("Action", "Create");
return view;
}
}
catch
{
return View();
}
}
Và đây là một phần của quan điểm của tôi:
@Html.DropDownListFor(model => model.CategoryID, new SelectList(Model.Categories,"CategoryID","CategoryName"))
@Html.ValidationMessageFor(model => model.CategoryID)
Tôi có vấn đề với NullReferenceExeption nhưng tôi không biết tại sao. Tôi có thể làm theo cách này không? Nó trông rất dễ dàng đối với tôi.
Chỉ cần sử dụng ứng dụng bạn thoát khỏi hộp với giao diện người dùng jQuery? – CarneyCode