仅使用ASP.NET MVC绑定实体框架集合

时间:2010-04-26 10:06:55

标签: asp.net-mvc entity-framework

首先:使用Entity Framework v4.0。 ASP.NET MVC 2.0。 Visual Studio 2010.

我的模型只包含一个订单&订购商品。我想要做的只是在没有太多麻烦的情况下绑定该模型(避免类型转换器等)。 简单的模型看起来像这样:

public class Order {
    public int ID { get; set; }
    public string OrderNumber { get; set; }
    public EntityCollection<OrderItem> Items { get; set; }
}
public class OrderItem {
    public int ID { get; set; }
    public string Qty { get; set; }
}

这很简单,我想保留它。该模型直接来自实体框架生成器生成的代码。我更愿意直接从实体框架中使用该模型(我知道有观点认为这是一件坏事,但是唉)。然后我将View看起来像这样:

<% using (Html.BeginForm()) {%>
    <%: Html.ValidationSummary(true) %>
    <fieldset>
        <legend>Fields</legend>
        <div class="editor-label">
            <%: Html.LabelFor(model => model.ID) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.ID) %>
            <%: Html.ValidationMessageFor(model => model.ID) %>
        </div>
        <div class="editor-label">
            <%: Html.LabelFor(model => model.OrderNumber) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.OrderNumber)%>
            <%: Html.ValidationMessageFor(model => model.OrderNumber)%>
        </div> 
        <div id="lineItems">
             Where I need to put my line items to be edited, inserted
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
<% } %>

我想要做的是我可以使用动态订单项(使用javascript)。 问题是:

  1. 如何插入初始订单项(在lineItems div中)。这需要强类型并使用MVC的内置验证框架。
  2. 动态插入订单项的最佳方式,以便在回发时完全绑定到模型而不会产生太多混乱(id = 1,2,3,4等)。
  3. 任何帮助,示例,提示等都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

史蒂夫桑德森写了一个很好的blog post,这应该对你的情况有所帮助。