0

我有一个带有Clients的设置User

简单地说,Client只是有一个

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

并且User具有 - 在它的属性中 - 一个

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

在创建Users时,Users是在特定Clients下创建的(显然)

所以:在我的User创建页面中,我将ClientId 放入 Viewbag 中,以便我可以将它与User我的创建控制器一起发送。

我遇到的第一个问题Modelstate.IsValidfalse- 这是因为创建ClientUser模型没有Name所需的。快速修复:同时输入名称并返回它。

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

我敢肯定这不是一种奇怪的一次性风格设置。必须有一种“正确”的方式来做到这一点,而不是我目前正在做的捏造。

1)我怎样才能“正确”提供/保留Client我想要分配新User的?

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

谢谢你。

4

1 回答 1

0

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

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

于 2013-02-19T18:39:47.913 回答