0
我正在使用MVC3與EF 4.1,並試圖編輯一個模型,它有一個下拉列表,這是一個父對象的引用。下面是型號:MVC3下拉列表混淆
public class Section
{
public Guid SectionId { get; set; }
public string Title { get; set; }
public virtual ICollection<Article> Articles { get; set; }
}
public class Article
{
public Guid ArticleId { get; set; }
public DateTime? DatePosted { get; set; }
public string Title { get; set; }
public string ArticleBody { get; set; }
public Section Section { get; set; }
}
這裏的控制器動作來渲染編輯的GET部分:
public ActionResult Edit(Guid id)
{
Article article = db.Articles.Find(id);
var sections = db.Sections.ToList();
var secIndex = sections.IndexOf(article.Section);
ViewBag.SectionId = new SelectList(sections, "SectionId", "Title", secIndex);
return View(article);
}
和視圖
@model CollstreamWebsite.Models.Article
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Article</legend>
@Html.HiddenFor(model => model.ArticleId)
<div class="editor-label">
@Html.LabelFor(model => model.DatePosted)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DatePosted)
@Html.ValidationMessageFor(model => model.DatePosted)
</div>
...
<div class="editor-label">
@Html.LabelFor(model => model.Section)
</div>
<div class="editor-field">
@Html.DropDownList("SectionId")
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
終於爲編輯POST操作
我遇到的問題是,當HttpPost編輯回來時,article.Section爲空。如何強制視圖將該部分綁定到正在編輯的文章。
任何幫助表示讚賞。
這工作 - 謝謝。看起來很多工作,只是爲了綁定一個關聯對象。想知道是否有更簡單的方法。 – Matt
你可以直接在沒有Foreach的情況下直接創建一個SelectList: SelectList oTest = new SelectList(YourListOfObjects,「ValuePropertyOfTheObject」,「TextPropertyOfTheObject」);然後在下拉列表中使用SelectList。 –