首先使用实体框架和数据库开发asp.net C#MVC应用程序。 我是所有概念的新手。 我在数据库中有2个表:“Lote”和“Cargas”。我已经为两者创建了控制器和视图。我的表“Lote”有一个名为:lot_numero的主键,它在表“Carga”中用作外键。
我有一个视图,我打印表“Carga”中的所有数据。您可以查看以下代码。
@model IEnumerable<Deltas.carga>
@*@model IEnumerable<IGrouping<string, Deltas.carga>>*@
@{
ViewBag.Title = "Cargas por Lote";
@*var dbAccess = Database.Open("FornosDeltaEntities");*@
}
<h2>Index</h2>
<p>
@*@Html.ActionLink("Create New", "Create")*@
@using (Html.BeginForm())
{
<p>
Número de Lote:@Html.TextBox("searchString")
<input type="submit" value="Pesquisar por lote"/>
</p>
}
</p>
<table border="1">
<tr>
<th>
NºLote
</th>
<th>
NºCarga
</th>
<th>
NºCemento
</th>
<th>
TPE
</th>
<th>Data</th>
<th>Acções</th>
</tr>
@foreach (var item in Model) {
@*var numLoteCurrente = @item.lot_numero;*@
<tr>
<td>
@*@Html.DisplayFor(modelItem => item.lot_numero)*@
@*@numLoteCurrente*@
@Html.ActionLink(item.lot_numero, "Details", "Lote",new { id = item.lot_numero },null)
</td>
<td>
@Html.ActionLink(item.cga_numero,"Details",new{id = item.cga_numero}, null)
</td>
<td>
@Html.DisplayFor(modelItem => item.cem_numero)
</td>
<td>
@Html.DisplayFor(modelItem => item.tpe_numero)
</td>
<td>@Html.DisplayFor(modelItem => item.ConverteData)</td>
<td>
@* @Html.ActionLink("Edit", "Edit", new { id=item.cga_numero }) |*@
@Html.ActionLink("Detalhes", "Details", new { id=item.cga_numero }) @*|
@Html.ActionLink("Delete", "Delete", new { id=item.cga_numero })*@
</td>
</tr>
}
</table>
<p> @Html.ActionLink("Back","Index") </p>
你可以在foreach循环之后看到我创建了一个与item.lot_numero相关的链接,允许我检查lot_numero的详细信息。这是有效的。
@foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink(item.lot_numero, "Details", "Lote",new { id = item.lot_numero },null)
</td>
</tr>
现在,在创建链接之前我想做的是:转到“Lote”表并检查数据库中是否存在该数字。如果存在,那么我会打印链接;如果没有,我会打印没有链接的item.lot_number。
我的问题是:如何连接到foreach中的那个表,并检查item.lot_numero是否有任何记录。
提前感谢您的关注和可能的帮助。
此致
我的课程是这样的:
namespace Deltas
{
using System;
using System.Collections.Generic;
public partial class lote
{
public string lot_numero { get; set; }
public string ope_numero { get; set; }
public string tpe_nome { get; set; }
public Nullable<int> lot_peso_total { get; set; }
public Nullable<int> lot_total_cargas { get; set; }
public Nullable<int> lot_cargas { get; set; }
public Nullable<int> lot_estado { get; set; }
public Nullable<decimal> lot_data { get; set; }
public Nullable<decimal> lot_hora { get; set; }
public Nullable<decimal> lot_peso_prp { get; set; }
public Nullable<decimal> lot_peso_total_cargas { get; set; }
public Nullable<int> lot_cem_num_utilizacoes { get; set; }
public Nullable<int> lot_cem_tipo { get; set; }
public string lot_datahora { get; set; }
}
}
namespace Deltas
{
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Web;
using System.Web.Mvc;
public partial class carga
{
public string cga_numero { get; set; }
public string cem_numero { get; set; }
public string lot_numero { get; set; }
public string tpe_numero { get; set; }
public string buj_numero { get; set; }
public string ope_numero { get; set; }
public Nullable<decimal> for_numero { get; set; }
public string ret_numero { get; set; }
public Nullable<decimal> cga_carga { get; set; }
public Nullable<int> cga_parte_lote { get; set; }
public Nullable<decimal> cga_data_in_forno { get; set; }
public Nullable<decimal> cga_hora_in_forno { get; set; }
public string cga_tmp_in_forno { get; set; }
public Nullable<decimal> cga_data_out_forno { get; set; }
public Nullable<decimal> cga_hora_out_forno { get; set; }
public string cga_tmp_out_forno { get; set; }
public Nullable<int> cga_estado { get; set; }
public Nullable<int> cga_cem_num_utilizacoes { get; set; }
public Nullable<int> cga_ret_total_utilizacoes { get; set; }
public Nullable<int> cga_ret_num_utilizacoes { get; set; }
public Nullable<int> cga_ret_lim_utilizacoes { get; set; }
public Nullable<int> cga_buj_total_utilizacoes { get; set; }
public Nullable<int> cga_buj_num_utilizacoes { get; set; }
public Nullable<int> cga_buj_lim_utilizacoes { get; set; }
public string cga_lot_tmp_out_forno { get; set; }
public string cga_lot_tmp_in_forno { get; set; }
public Nullable<int> cga_lot_cem_num_utilizacoes { get; set; }
public string cga_datahora { get; set; }
public DateTime ConverteData { get { return DateTime.ParseExact(cga_datahora, "yyMMddHHmmss", CultureInfo.CurrentCulture); }}
}
}
我不确定他们是否有导航属性。你能简单解释一下吗?
提前致谢, Aganju
答案 0 :(得分:0)
创建一个类和方法来检查批次,如下所示
public class NewClass
{
public bool CheckLot(int id)
{
//do the logic
}
}
您可以从模型本身创建此类的实例,以访问方法 CheckLot
@model IEnumerable<Deltas.carga>
@{
ViewBag.Title = "Cargas por Lote";
var obj=new NewClass();
}
然后你可以在下面查看循环内部以显示链接
<td>
if(obj.CheckLot(item.lot_numero))
{
@Html.ActionLink(item.lot_numero, "Details", "Lote",new { id = item.lot_numero },null)
}
</td>
希望这有帮助
答案 1 :(得分:0)
MVC代表模型,视图,控制器,其中:
模型描述您想要对从数据库中提取的数据建模的方式
控制器处理所有必要的业务逻辑
查看显示您通过控制器
我觉得本教程对于这个领域的新手非常有用:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4