親オブジェクトの値を移入する選択リストの値を取得できないようです。 私は、SelectListと値を必要とするオブジェクトに必要な値にアクセスできるように、バインドするためにラッパーオブジェクトを使用しています。 私は何か基本的なものが欠けていると思っていますが、私はそれを見つけることができません。NHibernateとASP.NetのルックアップリストMVC
public class Status
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual bool IsClosed { get; set; }
public override string ToString()
{
return Name;
}
}
public class Issue
{
public virtual int Id { get; protected set; }
public virtual string Title { get; set; }
public virtual string Description { get; set; }
public virtual Status Status { get; set; }
public virtual DateTime CreatedOn { get; set; }
public virtual DateTime UpdatedOn { get; set; }
}
そして(NerdDinnerの例から)FormViewModel ...
のようなコントローラの外観上のアクションを作成してマイステータスpublic class IssueFormViewModel
{
public Issue Issue { get; set; }
public SelectList Statuses { get; set; }
public IssueFormViewModel(Issue issue, IList<Status> statuses)
{
Issue = issue;
Statuses = new SelectList(statuses, "Id", "Name", statuses[1].Id);
}
public IssueFormViewModel() { }
}
のリストを格納する:
私はこれらのモデルを持っていますpublic ActionResult Create()
{
IList<Status> statuses;
Issue issue = new Issue();
// NHibernate stuff getting a List<Status>
return View(new IssueFormViewModel(issue,statuses));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(IssueFormViewModel issueFormView)
{ // At this point issueFormView.Issue.Status == null
// ...
}
My Issueオブジェクトは、これらの名前を使用したステータスを除き、部分的にバインドされています。表示:あなたのコードは、2番目の項目であることを選択した項目を設定しようとしているようにNHibernateは1つの以上のアイテムを復活させていることを確認する必要があり、
<p>
<label for="Issue.Title">Title:</label>
<%= Html.TextBox("Issue.Title", Model.Issue.Title)%>
<%= Html.ValidationMessage("Title", "*") %>
</p>
<p>
<label for="Statuses">Status:</label>
<!-- also tried "Issue.Status" -->
<%= Html.DropDownList("Statuses", Model.Statuses)%>
<%= Html.ValidationMessage("Status", "*")%>
</p>
良いキャッチですが、私はOutOfBounds例外を取得しませんでした。私はテストのために1つ以上の価値があることを保証していました。 – hometoast