所以我是 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; }
}
给我带来问题的是 List 字段。
我的控制器中有以下代码:
public ActionResult Create()
{
ViewBag.EventId = new MultiSelectList(db.Events, "EventId", "Discipline");
ViewBag.CountryId = new MultiSelectList(db.Countries, "CountryId", "CountryName");
return View();
}
这是我认为的代码(我省略了其他字段的编辑器,它们都可以正常工作):
<div class="editor-label">
@Html.Label("Add Events")
</div>
<div class="editor-field">
@Html.ListBox("EventId")
@Html.ValidationMessageFor(model => model.Events)
</div>
这是我在控制器中的回发方法:
[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 字段仍然是一个空引用,所以我想知道如何将我选择的项目添加到 List Events 字段中。我在互联网上做了一些研究,但我得到的只是复杂的解决方案,如 FormCollections、使用 JQuery 等。它应该可以通过非常简单的方式解决,因为这都是针对学校项目的,他们并不指望我们使用 JQuery 或高级编程。我也一直在考虑在 EventListBox 旁边添加一个按钮,这样当我单击它时,选定的项目将被传递到视图之外的临时列表,我以后可以使用它来填充原始列表。