C# MVC如何将表单数据序列化到模型?
MVC如何从表单数据设置对象的属性 例如:C# MVC如何将表单数据序列化到模型?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,MVC如何从表单数据设置对象的属性 例如: [HttpPost] public ActionResult Method(SomeModel model) <--- { .... } 实际结果: { DateTimeFormat: "MM/dd/yyyy", FieldColumnPairs: null } 预期结果:(来自visual studio调试器中的局部变量) 这就是它的工作原理。看看@RyanTernier,我明白了,但是当它脱离控制器的上下文时,我如
[HttpPost]
public ActionResult Method(SomeModel model) <---
{
....
}
实际结果:
{
DateTimeFormat: "MM/dd/yyyy",
FieldColumnPairs: null
}
预期结果:(来自visual studio调试器中的局部变量)
这就是它的工作原理。看看@RyanTernier,我明白了,但是当它脱离控制器的上下文时,我如何做同样的事情呢?例如,将模型和请求传递给返回模型实例的静态方法?为什么要在代码内部的任何位置传递原始表单数据?用例是什么?控制器序列化表单数据的整个要点是,这样您就可以在代码中使用它作为适当的对象,并在函数之间传递该对象,并且能够用它做比原始请求体多得多的事情。也许我没有抓住要点,但我不能很好地理解通过(听起来像什么)在应用程序的另一部分中重新创建反序列化程序来实现什么。为什么这对您有用?@ADyson它为我提供的价值是能够为向导过程中的每个步骤动态设置操作。我想要一个类,在这个类中我可以分配操作和预期的模型类型,而不是为控制器主体中的“向导”实现草率的多变量代码。好的,但所有这些都不需要您将原始表单数据传递到控制器之外。控制器仍然可以先为您序列化它。
public class ExampleModel
{
//Default formats to search for
public readonly string[] DateTimeFormats =
{
"yyyy-MM-dd",
"MM/dd/yyyy",
"MM-dd-yyyy"
};
[Display(Name = "Date Format")]
public string DateTimeFormat { get; set; } = "MM/dd/yyyy";
Dictionary<long, int?> FieldColumnPairs { get; set; }
}
{
"DateTimeFormat":"MM/dd/yyyy",
"FieldColumnPairs[0].Key":1,
"FieldColumnPairs[0].Value":5,
"FieldColumnPairs[1].Key":2,
"FieldColumnPairs[1].Value":5,
"FieldColumnPairs[2].Key":3,
"FieldColumnPairs[2].Value":5,
}
{
DateTimeFormat: "MM/dd/yyyy",
FieldColumnPairs: null
}
{
DateTimeFormat: "MM/dd/yyyy",
FieldColumnPairs: Count = 33
[0] {[1,5]}
[1] {[2,5]}
[2] {[3,5]}
[3] {[4, ]}
}