私はMVCの初心者ですから、私が想像しているのは基本的な質問です。 MVCカスタムビューモデルの問題
は、私は自分のフォームで複数選択リストを持っているために、カスタムのviewmodelを作成しました:私は私の最初の試みは、唯一の複数選択の最初の値をキャプチャことがわかっ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から完全な出力を取得し、それに応じて解析することができます。問題は、これはviewmodelのパラメータのないコンストラクタがないことです(それはありません)。これを修正する正しい方法はわかりません。私が試したことはありませんでした。本当に助けが必要です!
ことができます場合は、私の見解は次のようになります。
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MySite.Controllers.CustomerFormViewModel>" %>
...
<% using (Html.BeginForm())
<%= Html.ListBox("CustomerType", Model.CustomerType)%>
...
いくつかの調査をして、あなたが言うように、カスタムモデルバインダーはまさに私が必要とするものだと結論づけました。今私はちょうど1つを書く方法を理解する必要があります! ご意見ありがとうございます - 私はあなたの提案を取って、私はそれを動作させることができるかどうかを確認します。 – user101306