1

开始开发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); }}
    }
}

我不确定他们是否有导航属性。你能提供一个简短的解释吗?

提前致谢, 阿甘朱

4

2 回答 2

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>

希望这可以帮助

于 2013-09-04T18:03:16.927 回答
0

MVC 代表模型、视图、控制器,其中:
模型描述了您希望对从数据库中提取的数据进行建模的方式
控制器处理所有必要的业务逻辑
视图显示您通过控制器处理的所有数据

我发现本教程对于该领域的新手非常有用:http ://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc -4

于 2013-09-05T03:34:47.900 回答