2

私はこの Index.cshtml クラスを持っています:

@model ProOptInteractive.ViewModels.InvoicePageViewModel

@{
    ViewBag.Title = "Index";
}

<div>@Html.Partial("ListServices", Model.Services)</div>
<div>@Html.Partial("ListProducts", Model.Products)</div>
<div>@Html.Partial("Invoice", Model.InvoiceViewModel)</div>

そして、これは私の InvoicePageViewModel です:

namespace ProOptInteractive.ViewModels
{
    public class InvoicePageViewModel
    {
        public InvoiceViewModel InvoiceViewModel { get; set; }
        public IEnumerable<Service> Services { get; set; }
        public IEnumerable<Product> Products { get; set; }
    }
}

問題は、このビューをロードするたびに、間違ったモデルをディクショナリに渡したというエラーが表示され、どの部分ビューが問題を引き起こしているかが特定されないことです。各パーシャルには異なるモデル タイプがあり、1 つは Product と呼ばれる IEnumerable、もう 1 つは Service と呼ばれる IEnumerable、および InvoiceViewModel と呼ばれるビューモデルを持つ Invoice パーシャル ビューです。

この作業を行う方法を説明できる人はいますか? ところで、私は Razor と MVC には少し慣れていません。

アップデート

次のエラー メッセージが表示されます。

ディクショナリに渡されたモデル アイテムのタイプは「ProOptInteractive.ViewModels.InvoiceViewModel」ですが、このディクショナリにはタイプ「ProOptInteractive.ViewModels.InvoicePageViewModel」のモデル アイテムが必要です。

4

5 に答える 5

2

エラーは、Invoice部分ビューをタイプ のモデルを持つように設定したにもかかわらず、タイプInvoicePageViewModelのモデルを渡しているためですInvoiceViewModel

InvoiceViewModelタイプが になるようにプロパティを更新するか、タイプ のモデルを使用するようにビューをInvoicePageViewModel変更してください。InvoiceInvoiceViewModel

于 2013-05-08T12:48:55.423 に答える
2

エラーが発生しています<div>@Html.Partial("Invoice", Model.InvoiceViewModel)</div>

あなたのビューInvoiceはタイプのモデルを受け入れ InvoicePageViewModelており、あなたは渡していますInvoiceViewModel

コードを次のように変更します<div>@Html.Partial("Invoice", Model)</div>

またはとしてInvoice受け入れるようにビューを変更しますInvoiceViewModel

@model ProOptInteractive.ViewModels.InvoiceViewModel

于 2013-05-08T13:08:35.167 に答える
1

次のように、モデルを部分ビューに渡すことができます。

@Html.Partial("Invoice", Model.InvoiceViewModel) 

または似たようなもの。

メイン ビューのモデル:

class InvoicePageViewModel {
...
    public InvoiceViewModel InvoiceViewModel { get; set; }
    public IEnumerable<Service> Services { get; set; }
    public IEnumerable<Product> Products { get; set; }
...
}

次に、部分ビューを更新して、次のようにビュー モデルを受け入れます。

@model InvoiceViewModel

...
于 2013-05-08T12:14:48.663 に答える