2016-02-29 137 views
0

在我的MVC web应用程序中,我有linq查询从数据库中获取记录,我想使用viewmodel在视图上显示该记录。我尝试了以下代码。将linq查询结果传递给viewmodel

[HttpGet] 
    public ActionResult CreatePDF() 
    { 
     RentalAgreementEntities db = new RentalAgreementEntities(); 
     String strSession1 = "39726-10275-6027589725",strStatus = "Y",strUserType = "L"; 

     var q = (from um in db.User_Master 
       join ut in db.UserType_Master on um.US_SerialNo.ToString() equals ut.UT_UserNo 
       join pu in db.PropertyUser_Master on ut.UT_SerialNo.ToString() equals pu.PU_UserNo 
       join pr in db.Property_Master on pu.PU_PropertyNo equals pr.PR_SerialNo.ToString() 
       where pr.PR_MakerID == strSession1 
       && ut.UT_Status == strStatus 
       && ut.UT_UserType == strUserType 

       select new 
       { 
        um.US_FirstName, 
        um.US_LastName 
       } 
       ).AsEnumerable().Select(um => new User_Master { 

       US_FirstName = um.US_FirstName.ToString(), 
       US_LastName=um.US_LastName 

      }).ToList(); 

     var myviewmodel=new viewmodelPDF() 
     { 
      lsusermaster=q.ToList(); 
     } 
     return View("pdfgenerationvw",myviewmodel); 
    } 

我还创建viemodel来管理所有的模型对于显示在视图(在这里,只是一个模型接入码)。

public class viewmodelPDF 
{ 
    public List<User_Master> lsusermaster { get; set; } 
} 

我的模型类,为此我将从数据库中获取记录。

public partial class User_Master 
{ 
    public string US_FirstName { get; set; } 
    public string US_LastName { get; set; } 
    public int US_SerialNo { get; set; } 
} 
//Other Models 

现在我的问题是,在我的动作代码,当我试图查询结果分配给视图模型的lsusermaster那么它会产生编译错误的初级讲座。 enter image description here

我不知道,为什么会出现此编译错误,我该如何将查询结果分配给viemodel属性?

+1

可以,只是删除了;标志。由于您使用的是对象符号,因此不能在每行上使用分号,但常规逗号将起作用。或者在这种情况下,根本没有任何迹象。 – andreasnico

+0

当我删除';'然后comiler给出错误';预计' – Johnson

+1

移动;在最后} – andreasnico

回答

2

试试这个:

var myviewmodel=new viewmodelPDF() 
{ 
    lsusermaster=q.ToList() 
}; 
+0

谢谢,它的工作原理。在行动中,代码'lsusermaster'显示一条记录,但在视图模型'lsusermaster'中显示零条记录。是否需要在viemodel类中创建'User_Master'模型的对象来访问记录? – Johnson

+0

你的代码对我来说看起来是正确的。当你说它在你的viewmodel lsusermaster中显示零记录时,你是什么意思?您在视图中使用viewmodel lsusermaster吗? – andreasnico

+0

是的。我将在视图中显示来自'lsusermaster'的记录。 – Johnson

2

当使用在C#对象初始,则不能使用;属性之间,则在初始化的末尾使用它

所以只是删除;(或使用,,所建议的),并将其移动到初始化块

var myviewmodel=new viewmodelPDF() 
{ 
    lsusermaster=q.ToList() 
}; 

使用,工程,即使没有更多的属性...它“看起来”坏的结束,但它使更容易地不断增加新的特性,你应该需要他们......如果代码是最终的,我不会使用它,但这是个人偏好CE

+0

谢谢Jcl,它的工作原理。 – Johnson

相关问题