0

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

我有两个表,Sales 和 SalesLine。每个销售有许多销售线。我要做的是添加一个销售,并在同一页面中添加不同的销售行。在 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>

<% } %>

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

4

1 回答 1

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
于 2012-05-15T17:13:56.900 回答