[英]MVC4 Modelbinding with class properties
我有一个带有User
的Client
的安装程序。
简单来说, Client
只有一个
[Required]
public string Name { get; set; }
并且User
在其属性中具有-
[Required]
public virtual Client Client { get; set; }
在创建User
, User
是在特定Client
之下创建的(显然)
因此:在我的User
创建页面中,我将Client
ID放入Viewbag中,以便可以将其与User
一起发送到我的创建控制器。
第一个问题,我打的是Modelstate.IsValid
是false
-这是因为Client
的User
模型创建没有Name
的要求。 快速修复:还要输入名称并返回该名称。
通过验证,我可以在代码中正确检索Client
并将其分配给我的User
并保存新User
yada yada ...
我确定这不是一个奇怪的一次性设置。 必须有一种“适当的”方式来做到这一点,而不是我目前正在做的事情。
1)如何“正确地”提供/保留要分配新User
的Client
?
2)如果上述方法不可行,什么是最好的方法? 我目前将Client.Id
存储在User.Client.Id
字段中,并且没有使用[Bind(Exclude="Client")]
,它完全将Client
从User
绑定中删除,我不确定如何传递Client
数据并对其进行验证。
谢谢。
如果您使用视图模型而不是将实体直接传递到视图,那么这将不是问题。
使用视图模型的原因之一是视图与数据模型的要求不同。 在这种情况下,您根本不需要视图中的“客户端”信息(除非您在某处显示该信息)。 您只是在创建一个新用户,并且在发布视图模型时,将根据提交的信息创建一个新实体。 此时,您只需分配ClientID并保存新用户即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.