Asp.net mvc 如何在视图中显示查询结果?

Asp.net mvc 如何在视图中显示查询结果?,asp.net-mvc,Asp.net Mvc,我使用的是MVC RC2 我有两张桌子 1产品PID、PName、CIDfk; 2分类ID,CName 所以我就这样问 var Product = from p in dc.Product from C in dc.Category where p.CIDfk == c.CID select new { ProductName = p.PName, Produ

我使用的是MVC RC2

我有两张桌子 1产品PID、PName、CIDfk; 2分类ID,CName

所以我就这样问

var Product = from p in dc.Product
                       from C in dc.Category
                       where p.CIDfk == c.CID
                       select new { ProductName = p.PName, ProductCategory = c.CName };
return view();
其中dc是LINQ到SQL class.dbml的数据库上下文

如何在视图中显示?我在哪里传递产品?在viewdata或“返回视图”中


请帮我解决…

您想拥有强类型视图并将产品作为视图模型传递吗

 var product = from p in dc.Product
                   from C in dc.Category
                   where p.CIDfk == c.CID
                   select p;

 return View( product );

视图的类型为ViewPage。

您希望具有强类型视图,并将产品作为视图模型传递

 var product = from p in dc.Product
                   from C in dc.Category
                   where p.CIDfk == c.CID
                   select p;

 return View( product );
您的视图类型为ViewPage。

您可以同时使用:

- ViewData["MyName"] = product.SingleOrDefault(); 
从视图中可以这样做:

 <% Product p = (Product)ViewData(p) %>
<%Product p = ViewData.Model%> //in case of a Strongly typed view
<%Product p = (Product)ViewData.Model%> //otherwise
从视图中可以这样做:

 <% Product p = (Product)ViewData(p) %>
<%Product p = ViewData.Model%> //in case of a Strongly typed view
<%Product p = (Product)ViewData.Model%> //otherwise
另一种方法是调用接受模型作为参数的视图重载,正如tvanfosson所说。

您可以使用:

- ViewData["MyName"] = product.SingleOrDefault(); 
从视图中可以这样做:

 <% Product p = (Product)ViewData(p) %>
<%Product p = ViewData.Model%> //in case of a Strongly typed view
<%Product p = (Product)ViewData.Model%> //otherwise
从视图中可以这样做:

 <% Product p = (Product)ViewData(p) %>
<%Product p = ViewData.Model%> //in case of a Strongly typed view
<%Product p = (Product)ViewData.Model%> //otherwise

另一种方法是调用接受模型作为参数的视图重载,正如tvanfosson所说。

这不会编译。您正在传递类型为IQueryable的模型,但view page model参数的类型不同。您可以将查询更改为选择p;我该如何设置查看页面类型?@Craig-你说得对。我看得不够仔细。我将更新我的答案以选择产品。@Vikas-如果您有一个代码隐藏文件-它们不是自RC1以来默认创建的-您只需将页面类更改为从ViewPage继承即可。如果没有,请将ASPX文件中的Inherits规范更改为inherit from ViewPage。这将不会编译。您正在传递类型为IQueryable的模型,但view page model参数的类型不同。您可以将查询更改为选择p;我该如何设置查看页面类型?@Craig-你说得对。我看得不够仔细。我将更新我的答案以选择产品。@Vikas-如果您有一个代码隐藏文件-它们不是自RC1以来默认创建的-您只需将页面类更改为从ViewPage继承即可。如果不是,请将ASPX文件中的Inherits规范更改为inherit from ViewPage。正如您所建议的//如果是强类型视图//否则,第二种方法是,如何获得类型产品?我的意思是,是否需要导入任何命名空间?如果实体在与视图不同的命名空间中声明,则必须在视图中导入它:。如果它位于同一名称空间中,则不必按照您的建议导入任何内容//如果是强类型视图//否则,第二种方法是,如何获得类型产品?我的意思是,是否需要导入任何命名空间?如果实体在与视图不同的命名空间中声明,则必须在视图中导入它:。如果它位于同一命名空间中,则不必导入任何内容