0

を作成しようとしていますViewModel。私のアプリでは、アカウントにエラーがある顧客のリストを表示したいと考えています。エラーは、別のプログラムによってデータベースに保存されます。

最終的な目的は、アカウント内のアイテムにエラーがある顧客に定期的にメッセージを送信することです (私たちは車両を扱っているため、ナンバー プレート チェックで問題が発生し、顧客の対応が必要な場合が例として挙げられます)。 .

ViewModelCustomerAlerts.csという名前を作成しました

using MyProjectName.Models;

namespace MyProjectName.ViewModels
{
    public class CustomerAlerts
    {
        public IEnumerable<string> companynames { get; set; }
    }
}

コントローラー CustomerAlertsController.cs を作成しました。

private TestDB_FleetCompany_Dashboard_Entities db = new TestDB_FleetCompany_Dashboard_Entities();

public ActionResult Index()
{

    var viewModel = new CustomerAlerts
    {
        companynames = (from v in db.Vehicles.Include(v => v.Company)
                        where v.Issue != null
                        select new { customernames = v.Company.Name }).Select(v => v.customernames).AsEnumerable()
    };

    return View(viewModel);
}

私の見解の一番上に私が持っている

@model IEnumerable<MyProjectName.ViewModels.CustomerAlerts>

影響を受ける会社名のリストを表示したいと思います (後で問題のある車両の数の列を追加する予定でした)。

@foreach (var affected in Model)
{
    <tr>
        <td>@Html.DisplayForModel(affected.companynames)</td>
        <td></td>
    </tr>
}

すべてを実行しようとすると、次のメッセージが返されます。

ディクショナリに渡されたモデル アイテムのタイプは 'MyProjectName.ViewModels.CustomerAlerts' ですが、このディクショナリにはタイプ 'System.Collections.Generic.IEnumerable`1[MyProjectName.ViewModels.CustomerAlerts]' のモデル アイテムが必要です。

解決策や少しの助けが欲しいのですが、自分で解決策を見つけるために何を読むべきかについての指針をいただければ幸いです。

私は試した:

return View(viewModel.AsEnumerable());

ただし、これにより、「AsEnumerable の定義が含まれていません」というエラーが発生します。

4

3 に答える 3

1

の単一インスタンスをCustomerAlertsビューに渡していますが、ビューのモデル タイプは のコレクションですCustomerAlerts

のコレクションを渡すかCustomerAlerts、ビュー モデル タイプを次のように変更します。

@model MyProjectName.ViewModels.CustomerAlerts
于 2013-03-27T15:14:46.047 に答える
1

CustomerAlertsこれは、メソッドから単一のインスタンスを返し、Indexビューがそのリストを期待しているためです。

于 2013-03-27T15:14:52.527 に答える
0

上記の@devdigitalによると、私にとってうまくいった答えは、ビューモデルタイプを次のように変更することでした:

@model MyProjectName.ViewModels.CustomerAlerts

以前にこれを試しましたが、例外を引き起こしているビューに何かが欠けていました。foreach ステートメントは、これを調整する必要がありました。

@foreach (var companyname in Model.companynames)
{
    <tr>
        <td>@companyname</td>
        <td>@companyname.Count()</td>
    </tr>
}

これにより、エラーを抱えている会社の便利なリストと、在庫にあるエラー状態の車両の数が表示されます。

于 2013-03-28T09:07:57.460 に答える