您遇到的问题是 MVC 不知道如何将下拉列表的选定值(这是一个字符串)转换为对象 Member。
您应该做的是拥有一个 selectedValue 属性,用于设置下拉列表中的值并检索返回的值。
新客户类别:
public class Customer
{
public string name { get; set; }
public List<SelectListItem> members { get; set; }
public string selectedValue { get; set; }
public Member selected { get; set; }
}
更新了下拉列表控件:
@Html.DropDownListFor(model => model.selectedValue, Model.members, "--Select--")
这将从下拉列表中选择的值返回到属性 selectedValue 中。
您的成员列表返回 null 的原因是 HTML 不返回下拉列表中的选项,它只返回选定的值。因此,当信息进入该方法时,仅给出输入表单的值。
如果您想查看发送回服务器的信息,您可以使用开发者控制台并捕获返回的 Http 请求
and/or
你可以加FormCollection collection
查看控制器操作的参数,以查看 MVC 使用哪些信息来构建传递给方法的对象。
[HttpPost]
public ActionResult Index(Customer customer, FormCollection collection)
{
return View();
}