我是一个 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)%>
...