1

ビュー内の 2 つのモデルにアクセスしているときに、View(Index.chtml) が 0 行を返しています。以下のコードを参照してください。ASP.NET は初めてで、まだ学習中です。デバッグしようとしましたが、テーブル データが正しく渡されていません。助けてください

================================================================================
Controller: (OrganizationCodesController.cs)
================================================================================
namespace MvcProject.Controllers
{
    public class OrganizationCodesController : Controller
    {
        //
        // GET: /OrganizationCodes/

        public ActionResult Index()
        {
            List<TABLE_CODES> temp_codes = new List<TABLE_CODES>();
            List<TABLE_ORGANIZATIONS> temp_organizations = new List<TABLE_ORGANIZATIONS>();

            var viewModel = new OrganizationCodesModel(temp_codes, temp_organizations);
            return View(viewModel);

        }
    }       
============================================================================
Model: (OrganizationCodesModel.cs)
============================================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;

namespace MvcProject.Models
{


    public class OrganizationCodesModel 
    {
        public List<TABLE_CODES> TABLE_CODES { get; set; }
        public List<TABLE_ORGANIZATIONS> TABLE_CODES { get; set; }

        public OrganizationCodesModel(List<TABLE_CODES> _codes, List<TABLE_ORGANIZATIONS> _organizations)
        {
            TABLE_CODES = _codes;
            TABLE_ORGANIZATIONS = _organizations;
        }   
    }
}
========================================================================
View: (Index.chtml)
========================================================================
@model MvcProject.Models.OrganizationCodesModel

<table>
<thead>
<tr>
        <th>
            ORGANIZATION_NAME
        </th>
        <th>
            RANK
        </th>
        <th>
            LEVEL
        </th>
</thead>    
<tbody> 
@foreach (var item in Model.TABLE_CODES) {
    <tr>
        <td>
        @foreach (var item_1 in Model.TABLE_ORGANIZATIONS)
        {
            if (item.LOCATION == item_1.ID)
            {
            @item1.NAME
                break;
            }
        }    
        </td>
        <td>
        @item.RANK
        </td>
        <td>
        @item.LEVEL
        </td>
    </tr>
}   
</tbody>
</table>
4

2 に答える 2

2
List<TABLE_CODES> temp_codes = new List<TABLE_CODES>();
List<TABLE_ORGANIZATIONS> temp_organizations = new List<TABLE_ORGANIZATIONS>();

var viewModel = new OrganizationCodesModel(temp_codes, temp_organizations);

インスタンス化する 2 つの空のリスト...

あなたはあなたのリストに何かを入れるべきです!

何かのようなもの

List<TABLE_CODES> temp_codes = GetTempCodesFromSomewhere();

また

List<TABLE_CODES> temp_codes = new List<TABLE_CODES> {
   new TABLE_CODES {LOCATION = 1, RANK = 1, LEVEL  =1},
   new TABLE_CODES{LOCATION = 2, RANK = 3, LEVEL = 12345}
};
于 2013-06-04T14:44:16.340 に答える
1

このように変更しますModel Class

public class OrganizationCodesModel
{
    public List<TABLE_CODES> listTABLE_CODES { get; set; }
    public List<TABLE_ORGANIZATIONS> listTABLE_ORGANIZATIONS { get; set; }
}

クラス名と区別するために、リストの名前にプレフィックスとしてテキスト「リスト」を追加しました。そうしないと、リスト名とクラス名の両方が同じになります。

さて、次の Index action methodように変更する必要があります。

 public ActionResult Index()
    {
        OrganizationCodesModel model = new OrganizationCodesModel();

        List<TABLE_CODES>listCodes = new List<TABLE_CODES> {
          new TABLE_CODES {LOCATION = 1, RANK = 1, LEVEL  =1},
          new TABLE_CODES{LOCATION = 2, RANK = 3, LEVEL = 12345}
        };
        List<TABLE_ORGANIZATIONS> listOrganisation = new List<TABLE_ORGANIZATIONS> {
          new TABLE_ORGANIZATIONS {ID = 1,NAME="ABC"},
          new TABLE_ORGANIZATIONS{ID = 2,NAME="XYZ"}
        };

        model.ListTABLE_CODES = listCodes;
        model.ListTABLE_ORGANIZATIONS = listOrganisation;
        return View(model);
    }

そして、Viewあなたのリスト名を次のように置き換えてください:

@foreach (var item in Model.listTABLE_CODES )
@foreach (var item_1 in Model.listTABLE_ORGANIZATIONS )

それだけです。これで、次のような出力を確認できます。

ここに画像の説明を入力

于 2013-06-05T10:20:57.327 に答える