所以我是新来的asp.net MVC 4编程,我碰到了另一个问题。将选定的值从我的视图中传递到列表
这是我的模型类:
public class OtherMeeting
{
public int OtherMeetingId { get; set; }
[Required(ErrorMessage="Name is required")]
public String Name { get; set; }
[Required(ErrorMessage="Location is required")]
public String Location { get; set; }
[DataType(DataType.Date)]
[Required(ErrorMessage="Date is required")]
public DateTime StartDate { get; set; }
[DataType(DataType.Date)]
[DateGreaterThan("StartDate")]
public DateTime EndDate { get; set; }
public int CountryId { get; set; }
public virtual Country Country { get; set; }
public Type Type { get; set; }
public int EventId { get; set; }
public List<Event> Events { get; set; }
}
这是一个的给我的问题列表字段。
我在我的控制器下面的代码:
public ActionResult Create()
{
ViewBag.EventId = new MultiSelectList(db.Events, "EventId", "Discipline");
ViewBag.CountryId = new MultiSelectList(db.Countries, "CountryId", "CountryName");
return View();
}
这是我在我的视图代码(我离开了编辑的其他领域,他们所有的工作,因为他们应该):
这是在控制器我回发方法:
[HttpPost]
public ActionResult Create(OtherMeeting otherMeeting)
{
if (ModelState.IsValid)
{
db.OtherMeetings.Add(otherMeeting);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.EventId = new MultiSelectList(db.Events, "EventId", "Discipline");
ViewBag.CountryId = new MultiSelectList(db.Countries, "CountryId", "CountryName");
return View(otherMeeting);
}
现在很明显的列表活动场仍然是空引用,所以我想知道,如何将我已选择的项目添加到List Events字段。我在互联网上做了一些研究,但我所得到的都是复杂的解决方案,如FormCollections,使用JQuery等等。它应该可以用一种非常简单的方法解决,因为这全部用于学校项目,而且他们不指望我们使用JQuery或高级编程。我也一直在考虑在EventListBox旁边添加一个按钮,这样当我点击它时,选定的项目将被传递到视图外部的一个临时列表,我可以稍后使用它填充原始列表。
这个答案是基于这样一个假设,即事件类只有一个id和学科领域的权利? – 2013-05-01 08:28:36
@RobinHellemans不一定 - 它基于这样的假设:那些是您视图所需的唯一字段。创建一个只包含这些字段的新ViewModel,并像我在上面的“Create”方法中那样从控制器中的“Event”对象填充它们。您不应该将您的域实体暴露给您的视图。 – 2013-05-01 08:32:23
好吧,我很难理解你究竟在干什么。这部分代码: public ActionResult Create() { var model = new OtherMeeting(); 的foreach(在db.Events事件E) { 变种eventModel =新EventViewModel { 编号= e.EventId, 名称= e.Discipline }; model.Events.Add(eventModel); } return View(model); } 正如我所看到的,我将EventViewModel对象添加到我的列表事件字段中。但一个事件有多个字段,所以它只会为其他字段添加空值?如果它们不可空? –
2013-05-01 08:55:21