1

私のコントローラーでは、以下に示すようにモデルオブジェクトをビューバッグに入れました:

ViewBag.fileModel = new ViewFileModel(id)

public class ViewFileModel
    {
        public Employee Employee { get; set; }
        public SelectList TrainingSelectList { get; set; }
        public SelectList FileTypeSelectList { get; set; }
        public int trainingId{ get; set; }
        public int fileType { get; set; }

        public ViewFileModel(int employeeId)
        {
            using (var unit = new UnitOfWork())
            {
                Employee = unit.EmployeeRepository.FindBy(e => e.Id == employeeId).SingleOrDefault();
                if (Employee == null)
                {
                    Debug.Print("Employee bulunamadi {0},", employeeId);
                    throw new ArgumentException("Hatali personel parametresi " + employeeId);
                }
                else
                {
                    TrainingSelectList = new SelectList
                       (Employee.TrainingList, "Id", "TrainName");
                    FileTypeSelectList = SelectListUtils.FileTypeSelectList(1);

               }

            }

        }

私のビューでは、部分ビューをレンダリングし、ビューにオブジェクトを渡そうとします。渡されたオブジェクトは、部分ビューの新しいモデルになります。

<div id="employee_files">
            @{ Html.RenderPartial("_DetailsFiles", new { ViewBag.fileModel });
        }

私の部分的な見解では、私はこれを持っています:@model G222.IK.Models.ViewModel.ViewFileModel

次の例外が発生しています。ViewBag が Object を返し、ビューが ViewFileModel を期待しているのは問題だと思います。レンダラー ビューでモデルにキャストしようとしましたが、うまくいきませんでした。これに対する修正はありますか?

The model item passed into the dictionary is of type '<>f__AnonymousType0`1[System.Object]', but this dictionary requires a model item of type 'G222.IK.Models.ViewModel.ViewFileModel'.
4

2 に答える 2

1

部分ビューに新しい匿名オブジェクトを渡しています。

 @{ Html.RenderPartial("_DetailsFiles", new { ViewBag.fileModel });

fileModel オブジェクトの値を持つプロパティ fileModel を持つ新しいオブジェクトを作成します。

以下を使用する必要があります。

@{ Html.RenderPartial("_DetailsFiles", ViewBag.fileModel);

そうすれば、ViewBag プロパティの値が正しく渡されます。

于 2013-06-10T11:55:19.650 に答える