gpt4 book ai didi

asp.net-mvc - 模型绑定(bind)后模型嵌套类型为空

转载 作者:行者123 更新时间:2023-12-01 09:01:50 25 4
gpt4 key购买 nike

我有一个 ViewModel 如下:

public class CheckoutViewModel
{
public string ProductNumber { get; set; }
public string Name { get; set; }
public int Price { get; set; }
public Input UserInput;

public class Input
{
public string Email { get; set; }
public string Phone { get; set; }
}
}

像这样的 Action :
[HttpPost]
public ActionResult Index(CheckoutViewModel model)
{
// ...
return View();
}

我的模型绑定(bind)如下:
@model GameUp.WebUI.ViewModels.CheckoutViewModel

@using (Html.BeginForm("Index", "Checkout", FormMethod.Post))
{
@Html.AntiForgeryToken()

<!-- some HTML -->

@Html.LabelFor(m => m.UserInput.Email)
@Html.TextBoxFor(m => m.UserInput.Email)

@Html.LabelFor(model => model.UserInput.Phone)
@Html.TextBoxFor(model => model.UserInput.Phone)

<button>Submit</button>
}

当我提交表单时,UserInput 为空。我知道 ASP.NET MVC 能够绑定(bind)嵌套类型,但在这段代码中不能。我也可以通过以下方式获取电子邮件和电话值:
var email = Request.Form["UserInput.Email"];
var phone = Request.Form["UserInput.Phone"];

也许我做错了什么!这是一个简单的模型绑定(bind),您可以在网络上随处找到。

最佳答案

你忘了在你的 UserInput 中放一个二传手。 ,我不认为setter是自动的。无论如何,您只需在 UserInput 中放置一个 getter/setter 即可使其工作。并且无需在您的 Controller 方法中做额外的事情:

public Input UserInput { get; set; }

您的完整模型:
public class CheckoutViewModel
{
public string ProductNumber { get; set; }
public string Name { get; set; }
public int Price { get; set; }
public Input UserInput { get; set; }

public class Input
{
public string Email { get; set; }
public string Phone { get; set; }
}
}

关于asp.net-mvc - 模型绑定(bind)后模型嵌套类型为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15779072/

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