私は少し MVC 初心者なので、初歩的な質問であることをご容赦ください。
フォームに複数選択リストを含めるために、カスタム ビューモデルを作成しました。
public class CustomerFormViewModel
{
public Customer Customer { get; private set; }
public MultiSelectList CustomerType { get; private set; }
public CustomerFormViewModel(Customer customer)
{
Customer = customer
// this returns a MultiSelectList:
CustomerType = CustomerOptions.Get_CustomerTypes(null);
}
}
最初の試行で複数選択の最初の値しか取得できなかったことがわかりました。これは、作成アクションが次のようになったためだと推測しました。
// GET: /Buyer/Create
public ActionResult Create() { ... }
// POST: /Buyer/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Customer customer) { ... }
ということで、以下のように変更することにしました。
// GET: /Buyer/Create
public ActionResult Create() { ... }
// POST: /Buyer/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(CustomerFormViewModel model) { ... }
MultiSelectList から完全な出力を取得し、それに応じて解析できるようにします。問題は、これはビューモデル用のパラメーターなしのコンストラクターがない (そして存在しない) と不平を言うことです。これを修正する正しい方法がわかりません。私が試したことは何もうまくいかず、本当に助けが必要です!
それが役立つ場合、私のビューは次のようになります。
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MySite.Controllers.CustomerFormViewModel>" %>
...
<% using (Html.BeginForm())
<%= Html.ListBox("CustomerType", Model.CustomerType)%>
...