gpt4 book ai didi

c# - MVC 自定义 View 模型问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:47 25 4
gpt4 key购买 nike

我是一个 MVC 新手,所以你必须原谅我认为这是一个初级问题。

我创建了一个自定义 View 模型,以便在我的表单中有一个多选列表:

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 获得完整的输出并相应地解析它。问题是,这提示 View 模型没有无参数构造函数(实际上没有)——我不确定解决这个问题的正确方法。我尝试过的任何事情都没有奏效,我真的需要一些帮助!

如果有帮助,我的 View 如下所示:

<%@  Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MySite.Controllers.CustomerFormViewModel>" %>
...
<% using (Html.BeginForm())
<%= Html.ListBox("CustomerType", Model.CustomerType)%>
...

最佳答案

您是否尝试过自定义 ModelBinder。不确定我是否清楚地理解您的代码,但这可能是您的起点:

public class CustomerFormViewModelBinder : DefaultModelBinder
{
protected virtual object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
{
var model = new CustomerFormViewModel(customer)
}
}

关于c# - MVC 自定义 View 模型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/880933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com