C# 如何在ModelView中添加另一个值并从操作中传递它

C# 如何在ModelView中添加另一个值并从操作中传递它,c#,asp.net,asp.net-mvc,entity-framework,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,在my Products PartialView表中 @model IEnumerable<Products.Models.ProductModelView> 有人能帮我制定我的类、视图模型和我的操作吗?创建一个“复合”对象,并将其传递(按照@Uwe): 或者构造并传递IEnumerable products到return PertialView(): 或执行直接联接: var products = from p in context.Products

在my Products PartialView表中

@model IEnumerable<Products.Models.ProductModelView>
有人能帮我制定我的类、视图模型和我的操作吗?

创建一个“复合”对象,并将其传递(按照@Uwe):

或者构造并传递
IEnumerable products
return PertialView()

或执行直接联接:

var products = from p in context.Products
               join u in context.User on p.UserDepartmentId = u.UserDepartmentId // or whatever it is
               where u.UserName == userName // it's better to use userId which is likely the primary key
               select p;
创建一个“复合”对象并传递它(按照@Uwe):

或者构造并传递
IEnumerable products
return PertialView()

或执行直接联接:

var products = from p in context.Products
               join u in context.User on p.UserDepartmentId = u.UserDepartmentId // or whatever it is
               where u.UserName == userName // it's better to use userId which is likely the primary key
               select p;

您的视图需要
IEnumerable
,您正在传递类型为
ProductModelView
?@adiga感谢您的响应。不,我只是打错了。我的意思是IEnumerable,但我仍然不知道如何传递这些值,而是创建一个“复合”对象并传递它。您仍然在传递一个类型为
ProductModelView
的对象。但是您的视图需要一个
ProductModelView
s的集合。因此,在控制器中,您必须创建
ProductModelView
列表并传递该列表。您的视图需要
IEnumerable
,您传递的对象类型为
ProductModelView
?@adiga感谢您的回复。不,我只是打错了。我的意思是IEnumerable,但我仍然不知道如何传递这些值,而是创建一个“复合”对象并传递它。您仍然在传递一个类型为
ProductModelView
的对象。但是您的视图需要一个
ProductModelView
s的集合。因此,在控制器中,必须创建
ProductModelView
的列表并传递该.Greate。。非常感谢你!大。。非常感谢你!
public class ProductListViewModel
{
    public IEnumerable<ProductModelView> Products { get; set; }
}
@model ProductListViewModel
// IQueryable<Product>
var products = from p in context.Products
               where p.DepartmentId == depId // aware! would cause 2 queries to db, shall be rewritten
               select p;
var prModels = from p in products.AsEnumerable() // 'memorize' db query into in-memory objects
               select new ProductViewModel
               {
                   ProductId = p.ProductId,
                   ProductName = p.productName,
                   DepartmentId = p.DepartmentId;
                   UserDepartmentId = deptId;
               };
return return PartialView("_ProductList", prModels);
public class Product
{
    public User { get; set; }
}
var products = from p in context.Products
               join u in context.User on p.UserDepartmentId = u.UserDepartmentId // or whatever it is
               where u.UserName == userName // it's better to use userId which is likely the primary key
               select p;