0

asp.net mvc でメッセージを表示したい。このために、部分ビューを作成します。この部分ビューの名前は _feedback です。この部分ビューの本文に、このコードを書きます。

@model MyProject.SharedTools.OperationStatus

@if (Model != null)
{
    if (Model.IsSuccess)
    {
        @:Model.Message;
    }
    else
    {
        @:Model.Message;
    }
}

私はこのコードを _layout ファイルに入れました:

@Html.Partial("_feedback")

そして、このコードを使用して、コントローラーからのメッセージを見たいとき:

 operationStatus = _provinceRepository.Save();
 if (operationStatus.IsSuccess)
 {
     TempData["OperationStatus"] = operationStatus;
     return RedirectToAction("Index");
 }

しかし、私はこのエラーを出します:

ディクショナリに渡されたモデル アイテムは「MyProject.Models.ProvinceModel」タイプですが、このディクショナリには「MyProject.SharedTools.OperationStatus」タイプのモデル アイテムが必要です。

4

1 に答える 1

1

パーシャルが期待する正しいモデルが渡されていることを確認してください。

@Html.Partial("_feedback", Model.SomePropertyOfTypeOperationStatus)

ヘルパーの 2 番目の引数としてモデルを指定しない場合Html.Partial、現在のビューのモデル (この場合は type MyProject.Models.ProvinceModel) が自動的に渡されます。そのため、エラーが発生します。MyProject.SharedTools.OperationStatus.

また、パーシャル内のコントローラーに保存した TempData 値をどこで使用しているかは明確ではありません。多分それは次のようなものでなければなりません:

@model MyProject.SharedTools.OperationStatus

@if (Model != null)
{
    @TempData["OperationStatus"]
}

または、モデルを使用せずに、TempData に保存した値を部分的に直接表示するつもりではありませんでしたか?

@TempData["OperationStatus"]
于 2013-02-22T09:15:01.083 に答える