【发布时间】:2013-02-17 02:19:51
【问题描述】:
我有以下模型类(我首先使用 EF 代码生成表)。
public class MyClass
{
....
[Required, ForeignKey("Address")]
public int Address1Id { get; set; }
virtual public Address Address1 { get; set; }
[Required, ForeignKey("Address")]
public int Address12d { get; set; }
virtual public Address Address2 { get; set; }
[Required, ForeignKey("Address")]
public int Address3Id { get; set; }
virtual public Address Address3 { get; set; }
....
}
public class Address { .... }
我希望MyClass 的创建视图显示所有地址字段,并且在保存MyClass 时,地址将首先保存在地址表中。但是脚手架为地址生成了一个 DropDownList 框。如何修改代码,使其像这些地址字段直接编码在类MyClass中一样,让控制器将表Address和AddressID中的地址保存在表MyClass中?
<div class="editor-label">
@Html.LabelFor(model => model.Address1Id, "Address")
</div>
<div class="editor-field">
@Html.DropDownList("Address1Id", String.Empty)
@Html.ValidationMessageFor(model => model.Address1Id)
</div>
更新: 我尝试创建以下 ViewModel,但脚手架抱怨类中没有定义键。
public class DealViewModel
{
public Deal Deal { get; set; }
public Address Address { get; set; }
}
【问题讨论】:
-
这是 MVC 还是 EF 问题。 MVC 可以使用这样的模型。 EF 需要一个适合密钥的类型。复杂类型适合作为数据库键。你希望达到什么目标?
标签: c# asp.net asp.net-mvc-3 entity-framework asp.net-mvc-4