gpt4 book ai didi

ASP.NET-MVC2 : Why does TryUpdateModel ignore properties after the second level of the object model tree?

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

也许我在这里遗漏了一些东西,但似乎在使用 TryUpdateModel 时,对象模型树 3 级或更多级别中的任何内容都被忽略了。

例如(简体):

public virtual ActionResult SomeAction(int id, FormCollection form)
{

IValueProvider vpFrom = form.ToValueProvider();
/*
At this stage, vpForm contains:
1)PropertyA
2) PropertyB.SubPropertyA
3) PropertyB.SubPropertyB.SubSubPropertyA
*/

TryUpdateModel(someObjectModel, null, null, null, vpFrom);
//The first two properties are applied, number (3) seems to be ignored

我在这里遗漏了什么吗?如果是这样的话,有没有人想出一个解决方法?

最佳答案

使用以下模型创建的快速项目。

public class TestModel {
public TestModelA A { get; set; }
public string Name { get; set; }
}

public class TestModelA {
public TestModelB B { get; set; }
public string Name { get; set; }
}

public class TestModelB {
public TestModelC C { get; set; }
public string Name { get; set; }
}

public class TestModelC {
public TestModelD D { get; set; }
public string Name { get; set; }
}

public class TestModelD {
public TestModelE E { get; set; }
public string Name { get; set; }
}

public class TestModelE {
public string Name { get; set; }
}

这是我的编辑 - 与您的基本相同

[HttpPost]
public ActionResult Edit(FormCollection form) {
IValueProvider vpFrom = form.ToValueProvider();

Models.TestModel t = new Models.TestModel();

TryUpdateModel(t, null, null, null, vpFrom);

return View(t);
}

在正确创建所有模型的情况下,这一切都完全符合预期。我可以看到发生的唯一问题是您可能没有从表单中传回相同的属性名称。 (例如不使用 <%: Html.TextBoxFor(model => model.A.B.C.CName)%>)

模型需要无参数的构造函数。但我敢肯定你会得到一个错误 - 除非你正在消费错误。

因此,如果没有有关您项目的更多信息,将很难提供帮助,因为基本设置会产生预期的结果。

关于ASP.NET-MVC2 : Why does TryUpdateModel ignore properties after the second level of the object model tree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412602/

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