【发布时间】:2016-05-06 13:19:46
【问题描述】:
我有如下表格。当我发送表单时,数据(id、content、gdate)到达 post ActionResult。但是,一个字段(名为“类别”)在帖子端变为空。缺少什么?
博文模型:
public class BlogPost
{
public virtual string Id { get; set; }
public virtual string content { get; set; }
public virtual string gdate { get; set; }
public virtual Category Category { get; set; }
}
类别模型:
public class Category
{
public int ID{ get; set; }
public string Name{ get; set; }
}
视图模型:
public class CreateVM
{
public BlogPost BlogPost { get;
public IEnumerable<SelectListItem> Categories;
}
控制器:
// GET: BlogPosts/Create
public ActionResult Create()
{
CreateVM vm = new CreateVM();
vm.Categories = new SelectList(db.Categories, "ID", "Name");
return View(vm);
}
return View(vm);
}
[HttpPost]
public ActionResult Create(CreateVM vm)
{
if (ModelState.IsValid)
{
db.BlogPosts.Add(vm.BlogPost);
db.SaveChanges();
return RedirectToAction("Index");
}
查看:
@Html.DropDownListFor(model => model.BlogPost.Category, Model.Categories);
【问题讨论】:
-
Category是一个复杂对象,您不能将<select>(或任何元素)绑定到一个复杂对象。您应该使用具有属性int SelectCategory的视图模型(绑定到BlogPost.Category.ID不是一个好主意,如果Category的任何属性包含验证属性,那么ModelState将无效)
标签: asp.net-mvc