在MVC中的索引视图中使用多个表

时间:2014-12-16 18:29:33

标签: c# asp.net-mvc entity-framework

我知道如果我想在我的索引视图中只查看一个表中的数据,我必须这样做:

  public class LocalidadesController : Controller
{

    // GET: /Localidades/
    private Entities db = new Entities();

    //
    // GET: /Concessao/
    [Authorize(Roles = "ADMINISTRADOR")]
    public ActionResult Index()

    {
        return View(db.SINCO_LOCALIDADE_CONCESSAO.ToList());
    }

对于两个表(在我的情况下,视图),我正在进行以下更改(localidades_view和municipios_view是 我希望选择数据的视图)。 型号:

namespace SINCO_MVC.Models
{
    [MetadataType(typeof(SincoLocalidadeConcessaoMetaData))]
    public partial class SINCO_LOCALIDADE_CONCESSAO
    {

}

    public class SincoLocalidadeConcessaoMetaData
    {

        [Display(Name = "ID LOCALIDADE:")]
        public int[] IDLOCALIDADE { get; set; }

        [Display(Name = "ID:")]
        public int IDCONCESSAO { get; set; }

        [Display(Name = "Localidade:")]
        public virtual LOCALIDADES_VIEW LOCALIDADES_VIEW { get; set; }

        public virtual MUNICIPIOS_VIEW MUNICIPIOS_VIEW { get; set; }
    }
}

查看:

  <%@ Page Title="SINCO - Localidades" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<SINCO_MVC.Models.SINCO_LOCALIDADE_CONCESSAO>>" %>

 <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
     SINCO - Localidades
 </asp:Content>

 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

 <h2>SINCO - Localidades</h2>

 <table>
      <tr>
          <th>
             <%: Html.DisplayNameFor(model => model.IDCONCESSAO) %>
         </th>
          <th>
             <%: Html.DisplayNameFor(model => model.IDLOCALIDADE) %>
          </th>
          <th></th>
     </tr>

 <% foreach (var item in Model) { %>
     <tr>
         <td>
             <%: Html.DisplayFor(modelItem => item.MUNICIPIOS_VIEW.NOME_MUNICIPIO) %>

         </td>
        <td>
         <%: Html.DisplayFor(modelItem => item.LOCALIDADES_VIEW.NOME_LOCALIDADE) %>

        </td>

我做了类似的事情,但它没有用,因为索引中的这些字段保持空白。 我如何访问此视图的数据(oracle views)??

*抱歉我的英语不好。

2 个答案:

答案 0 :(得分:2)

创建一个ViewModel,其中包含两个字段,每个表一个,Done ......类似于

public class MyViewModel
{
    public MyType Table1 {get;set;}
    public MyType2 Table2 {get;set;}
}

答案 1 :(得分:0)

问题是因为LazyLoad。我在模型中添加了表格,但由于LazyLoad没有返回。我必须在索引中添加以下代码:

   [Authorize(Roles = "ADMINISTRADOR")]
    public ActionResult Index(SINCO_LOCALIDADE_CONCESSAO model)

         {
                      return View("Index", db.SINCO_LOCALIDADE_CONCESSAO.Include(s => s.LOCALIDADES_VIEW).Include(s => s.MUNICIPIOS_VIEW));

 }

现在工作正常!