【问题标题】:ASP.NET Core MVC : model binding and complex typesASP.NET Core MVC:模型绑定和复杂类型
【发布时间】:2020-05-10 13:35:32
【问题描述】:

我有一个模型,它的属性是类(复杂类型),而类(复杂类型)又具有本身就是复杂类型的属性;海龟一路向下。

我觉得我应该能够做到

<input type="hidden" asp-for="@Model.MyComplexType" />

但显然不是那么开箱即用。

有简单的解决方案吗?我真的不想(不能被嘲笑)为每个属性写出&lt;input type="hidden"&gt;

【问题讨论】:

  • 简单的解决方案是使用简单的类,没有复杂的类型。您应该避免向客户端发送大量数据的原因有很多,如果您正在谈论具有许多复杂类型的复杂类型,那么这是实现视图模型的一个很好的理由。将最低限度发送到客户端,然后将视图模型映射到服务器上的数据模型。
  • 需要数据。如果不是,那么我就不会需要这样做了。我想我会把它序列化为 JSON。

标签: asp.net-core razor-pages


【解决方案1】:

您可以使用HiddenInput 属性标记复杂类型的属性:

public class ComplexType 
{
  [HiddenInput]
  public string Property {get;set;}
}

然后在你看来调用

@Html.EditorForModel(x => x.MyComplexType)

这会将您的所有属性添加为隐藏。

【讨论】:

  • 如果Property 本身是一个复杂类型而不仅仅是string 怎么办?
  • 将该属性应用于您要绑定的所有属性。
猜你喜欢
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2017-04-30
  • 2018-08-30
相关资源
最近更新 更多