在我的控制器中,我将模型对象放到viewbag中,如下所示:
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'.
答案 0 :(得分:1)
我会尝试
<div id="employee_files">
@{ Html.RenderPartial("_DetailsFiles", ViewBag.fileModel);
}
答案 1 :(得分:1)
您正在将新的匿名对象传递给局部视图。
@{ Html.RenderPartial("_DetailsFiles", new { ViewBag.fileModel });
使用属性fileModel创建一个新对象,该属性具有fileModel对象的值。
您应该使用:
@{ Html.RenderPartial("_DetailsFiles", ViewBag.fileModel);
这样,ViewBag属性的值将正确传递。