2016-04-22 46 views
0

我有一個使用域身份驗證的Asp.Net MVC應用程序,_Layout.cshtml文件包含對域環境返回正確域用戶名的User.Identity.Name的調用。將類實例傳遞給所有視圖

我有一個Person模型,存儲該個人的詳細信息。

在主控制器I實例的類,並將其傳遞到我的觀點:

public ActionResult Index() 
{ 
    var personInstance = new Person((User.Identity.Name)); 
    return View(personInstance); 
} 

然後在我的_Layout.cshtml我加我使用的模型:

@model namespace.Models.Person 

然後從在那裏,我用所需屬性替換User.Identity.Name

<p class="nav navbar-text navbar-right">Hello, @Model.fullName</p> 
@*<p class="nav navbar-text navbar-right">Hello, @User.Identity.Name</p>*@ 

這適用於主視圖秒,但如果我訪問已經在使用它拋出一個異常另一種模式另一種觀點認爲:

傳遞到字典的模型產品類型 「System.Collections.Generic.List`1 [namespace.Models的。日誌]',但 這本字典需要 'namespace.Models.Person'類型的項目。

解決此問題的最佳方法是什麼?

+0

在同一視圖中不能有兩個模型。如果你在模板'_Layout.cshtml'中添加一個'Person'模型,你不能在使用這個模板的視圖中添加任何模型。 –

回答

2

您需要擴展視圖模型以顯示Person屬性,然後創建此實例,並以類似方式填充它並將其傳遞到您的視圖中。

var model = new MyModel(); 
model.Person = new Person((User.Identity.Name)); 
return View(model);