2011-03-15 37 views
0

後,我有這樣的代碼:如何打印加入LINQ查詢

public ActionResult Index() 
{ 


     MembershipUser currentUser = Membership.GetUser(); 
     Guid 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{UserName = m.UserName, LastActivityDate = m.LastActivityDate, 
         Address = m2.Address, City = m2.City, State = m2.State, Zip = m2.Zip}; 
     return View(users); 

} 

此代碼是在我的控制,我想運行此查詢,然後將結果打印成我的看法,我會怎麼寫視圖?

回答

0

此代碼無法工作,因爲您的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> 
0

您需要獲取用戶類型並製作該類型的列表視圖。只需在控制器方法中右鍵單擊並選擇「創建視圖」,即可輕鬆製作視圖。這將確保路由正常完成。

1
//if your question is how to display(Print!) a view for above query then in ActionResult Index() 
    //1] As as best practise always Create a ViewModel - UserViewModel 
     public class UserviewModel 
     { 
     public string Username {get;set;} 
     public string Address {get;set;} 
     } 

    //2] Assign db.user values to UserviewModel or you can use Automapper 

    //and 3] then return this viewmodel to view 
    return View(UserviewModel);