Asp.net mvc 2 Modelbinder创建了一个不必要的外部关系。。如何解决?

Asp.net mvc 2 Modelbinder创建了一个不必要的外部关系。。如何解决?,asp.net-mvc-2,foreign-key-relationship,model-binding,Asp.net Mvc 2,Foreign Key Relationship,Model Binding,我有一个与制造商有外键关系的产品实体。我想让添加新产品的用户是否希望设置制造商成为可选的 在我看来,我有 <%= Html.LabelFor(p => p.Manufacturer.Name) %> <%= Html.EditorFor(p => p.Manufacturer.Name) %> 我想过于依赖模型活页夹不是一个好主意。你就快到了。您需要做的是为产品和制造商创建一组Viewmodels。查看代码,我假设您的产品类是linq到sql生成的类 您可能

我有一个与制造商有外键关系的产品实体。我想让添加新产品的用户是否希望设置制造商成为可选的

在我看来,我有

<%= Html.LabelFor(p => p.Manufacturer.Name) %>
<%= Html.EditorFor(p => p.Manufacturer.Name) %>

我想过于依赖模型活页夹不是一个好主意。

你就快到了。您需要做的是为产品和制造商创建一组Viewmodels。查看代码,我假设您的产品类是linq到sql生成的类

您可能想考虑添加一个额外的表单项目,例如指示是否添加制造商的复选框。 但由于某些原因,Product.Manufacturer.ID和Product.ManufacturerID被设置为0而不是null

预期的行为,因为0是int的默认值,不能为null

public ActionResult Create(Product product) {
    if (product.Manufacturer != null && 
        !String.IsNullOrEmpty(produnt.Manufacturer.Name) && 
        !String.IsNullOrWhiteSpace(produnt.Manufacturer.Name)) {
        Manufacturer manufacturer = _session.Single<Manufacturer>(m => m.Name.Equals(produnt.Manufacturer.Name));

        if (manufacturer == null) {
            _session.Add(product.Manufacturer);
        }
        product.Manufacturer = manufacturer;
    }
    _session.Add(product);
}
public ActionResult Create(Product product, Manufacturer manufacturer) {
    // ...
}