我正在尝试做一个简单的应用程序,但我无法正确编写视图,因此我可以在同一视图中使用不同的表。
我有两个表,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中更容易,至少对我而言)。
答案 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