在同一视图中使用两个不同的表

时间:2012-05-15 17:07:32

标签: asp.net .net asp.net-mvc-2

我正在尝试做一个简单的应用程序,但我无法正确编写视图,因此我可以在同一视图中使用不同的表。

我有两个表,Sales和SalesLine。每个销售都有许多SalesLines。我要做的是添加一个Sale,并在同一页面中添加不同的SalesLines。在C#代码中,每个Sale对象都有一个SalesLines的EntitySet。

添加新促销的HTML代码如下:

<% using (Html.BeginForm()) {%>
    <%: Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Fields</legend>



        <div class="editor-label">
            <%: Html.LabelFor(model => model.N_Factura) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.N_Factura) %>
            <%: Html.ValidationMessageFor(model => model.N_Factura) %>
        </div>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Fecha) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Fecha) %>
            <%: Html.ValidationMessageFor(model => model.Fecha) %>
        </div>
        <div class="editor-field">
        <%:Html.DropDownListFor(model =>model.Proveedor,(ViewData["SelectList"] as SelectList)) %>
          </div>



        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>

<% } %>

我想以某种方式在同一页面中添加新SalesLines,因此我可以通过单击Create链接填充它们并添加Sales和SalesLines。我试图在这里放置一个自动出现的默认SalesLine,然后使用AJAX(如果需要,可以用来添加其他SalesLines的链接)(我知道它在Java中更容易,至少对我而言)。

1 个答案:

答案 0 :(得分:0)

要在同一视图中从2个表中提取数据,请使用ViewModel。这是一个专门用于此视图的简单类。

public class SalesViewModel
{
  public Sales Sale { set;get;}
  public IEnumerable<SalesLine> Detail{ set;get;}

  public SalesViewModel()
  {
    if(this.Sale==null)
       this.Sale=new Sales();
    if(this.Details==null)
       this.Details=new List<Sales>();
  }    
}

将其返回到您的视图

public ActionResult GetSales(int id)
{
  SalesViewModel vm=new SalesViewModel();
  vm.Sale=dbContext.Sales.Where(x=x.Id=id);
  vm.Details=dbContext.SalesLine.Where(x=x.SaleId=id);

  return View(vm);

}

您的视图将被严格键入此视图模型;

@model SalesViewModel 

@Model.Sale.Id
/// remaining form elements
相关问题