此代碼無法工作,因爲您的LINQ查詢正在返回一個匿名對象,因此您無法強烈鍵入您的視圖。所以第一步是定義,這將代表你願意顯示在您的視圖中的信息視圖模型:
public class UserViewModel
{
public string UserName { get; set; }
public DateTime LastActivityDate { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
然後在你的控制器動作,您將回到這個視圖模型的集合:
在強類型視圖
public ActionResult Index()
{
var currentUser = Membership.GetUser();
var userId = (Guid)currentUser.ProviderUserKey;
var users =
from m in db.Users
join m2 in db.MyProfiles on m.UserId equals m2.UserId
where m.UserId == userId
select new UserViewModel
{
UserName = m.UserName,
LastActivityDate = m.LastActivityDate,
Address = m2.Address,
City = m2.City,
State = m2.State,
Zip = m2.Zip
};
return View(users);
}
最後:
@model IEnumerable<AppName.Models.UserViewModel>
@Html.DisplayForModel()
,並在其中將呈現爲相應的顯示模板(~/Views/Shared/DisplayTemplates/UserViewModel.cshtml
)收集的每個項目:
@model AppName.Models.UserViewModel
<div>
Username: @Html.DisplayFor(x => x.UserName)<br/>
Last activity: @Html.DisplayFor(x => x.LastActivityDate)<br/>
...
</div>