繁体   English   中英

具有类属性的MVC4模型绑定

[英]MVC4 Modelbinding with class properties

我有一个带有UserClient的安装程序。

简单来说, Client只有一个

[Required]
public string Name { get; set; }

并且User在其属性中具有-

[Required] 
public virtual Client Client { get; set; }

在创建UserUser是在特定Client之下创建的(显然)

因此:在我的User创建页面中,我将Client ID放入Viewbag中,以便可以将其与User一起发送到我的创建控制器。

第一个问题,我打的是Modelstate.IsValidfalse -这是因为ClientUser模型创建没有Name的要求。 快速修复:还要输入名称并返回该名称。

通过验证,我可以在代码中正确检索Client并将其分配给我的User并保存新User yada yada ...

我确定这不是一个奇怪的一次性设置。 必须有一种“适当的”方式来做到这一点,而不是我目前正在做的事情。

1)如何“正确地”提供/保留要分配新UserClient

2)如果上述方法不可行,什么是最好的方法? 我目前将Client.Id存储在User.Client.Id字段中,并且没有使用[Bind(Exclude="Client")] ,它完全将ClientUser绑定中删除,我不确定如何传递Client数据并对其进行验证。

谢谢。

如果您使用视图模型而不是将实体直接传递到视图,那么这将不是问题。

使用视图模型的原因之一是视图与数据模型的要求不同。 在这种情况下,您根本不需要视图中的“客户端”信息(除非您在某处显示该信息)。 您只是在创建一个新用户,并且在发布视图模型时,将根据提交的信息创建一个新实体。 此时,您只需分配ClientID并保存新用户即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM