Asp.net mvc HTML隐藏字段可以容纳复杂类型吗?

Asp.net mvc HTML隐藏字段可以容纳复杂类型吗?,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 3,在“回发到服务器端MVC控制器”操作中,要维护不用于用户输入的MVC模型属性的数据,以下主题建议使用标记视图页面上的隐藏字段: 但对我来说,这样一个隐藏字段只适用于基本C#类型,如int、bool、string等。但复杂类型属性,如用户定义的类或基本类型集合(如List)不适用于回发到服务器的隐藏字段。我的想法正确吗 事实上,我为复杂类型属性尝试了这样一个隐藏字段,而回发模型属性是null。服务器端会话对象或数据库重新查询是在服务器回发上重新填充复杂类型属性的一种方法。是否有其他方法可以在回发

在“回发到服务器端MVC控制器”操作中,要维护不用于用户输入的MVC模型属性的数据,以下主题建议使用标记视图页面上的隐藏字段:

但对我来说,这样一个隐藏字段只适用于基本C#类型,如int、bool、string等。但复杂类型属性,如用户定义的类或基本类型集合(如List)不适用于回发到服务器的隐藏字段。我的想法正确吗

事实上,我为复杂类型属性尝试了这样一个隐藏字段,而回发模型属性是null。服务器端会话对象或数据库重新查询是在服务器回发上重新填充复杂类型属性的一种方法。是否有其他方法可以在回发之间保留复杂类型模型属性的数据

我感谢你的帮助

更新:
复杂类型属性的隐藏字段对数据不敏感,不需要数据安全性。我需要使用某种方式,而不是数据库重新查询或服务器端会话变量。因此,在我的MVC模型中,我没有使用隐藏属性作为复杂类型,而是使用复杂类型序列化的字符串属性。在回发时,我反序列化了该隐藏属性,以便为另一个属性提供数据。有什么想法吗?

如果用户没有从UI更新,为什么要从客户端获取。如果需要,您应该从数据库中读取它。但对于您的问题,如果要发送复杂对象,只要输入字段名称与视图模型属性层次匹配(您的想法是正确的),就可能无法对复杂类型使用隐藏输入(除非您要创建自定义模型绑定器)。但无论如何都不应该包含隐藏的输入(恶意用户可能会操纵这些输入)-只需在post Method中再次获取数据即可。只要正确编码,您就可以使用JSON字符串发送回。只需创建JSON或自定义表示,使用自定义ModelBinder和/或dynamic/JObject,您就可以获取这些详细信息。@vishal sharma您能给我举个例子吗?如果用户不是从用户界面,为什么要从客户端获取它。如果需要,您应该从数据库中读取它。但对于您的问题,如果要发送复杂对象,只要输入字段名称与视图模型属性层次匹配(您的想法是正确的),就可能无法对复杂类型使用隐藏输入(除非您要创建自定义模型绑定器)。但无论如何都不应该包含隐藏的输入(恶意用户可能会操纵这些输入)-只需在post Method中再次获取数据即可。只要正确编码,您就可以使用JSON字符串发送回。只需创建JSON或自定义表示,使用自定义ModelBinder和/或dynamic/JObject,您就可以获取这些详细信息。@vishal sharma您能给我一些示例吗?