对于强制转换模型,DisplayFor默认失败

时间:2014-06-20 11:13:05

标签: asp.net-mvc razor

我的应用程序有两种类型的联系人,员工和客户。

所以我们有:

  

IContact接口

     

联系方式:IContact

     

客户:联系

     

员工:联系

我创建了一个视图,我尝试根据模型的类型显示正确的模板。这无声地失败,没有显示任何内容。

    @model IContact
    @{
        var customer = Model as Customer;
        var employee = Model as Employee;
    }

    @if (customer != null) 
    {
        @Html.DisplayFor(model => customer, "CustomerInfo")         
    }
    else if (employee != null)
    {    
        @Html.DisplayFor(model => employee, "EmployeeInfo")      
    }

我确信这应该很容易,但我不知道这样做的正确方法。

1 个答案:

答案 0 :(得分:1)

DisplayFor帮助器正在搜索与customeremployee匹配的属性,但它永远找不到它。您应该将视图渲染为部分视图。这允许您选择要渲染的视图,并传递强类型模型:

@if (customer != null) 
{
    @Html.Partial(CustomerInfo", customer)         
}
else if (employee != null)
{    
    @Html.Partial("EmployeeInfo", employee)      
}