Razor MVC4-如何在视图中返回linq到实体查询结果
使用控制器索引操作中的下一个代码,我尝试在razor视图中显示两个字段内容:Razor MVC4-如何在视图中返回linq到实体查询结果,razor,asp.net-mvc-4,linq-to-entities,entity-framework-5,Razor,Asp.net Mvc 4,Linq To Entities,Entity Framework 5,使用控制器索引操作中的下一个代码,我尝试在razor视图中显示两个字段内容: public class MyController : Controller { private MyEntities db = new MyEntities(); public ActionResult Index() { IEnumerable<Prod> signatures = from Prod in db.Products
public class MyController : Controller
{
private MyEntities db = new MyEntities();
public ActionResult Index()
{
IEnumerable<Prod> signatures = from Prod in db.Products
select new Prod(Prod.ProductID, Prod.ProductName);
}
}
但当我运行该项目时,我遇到了下一个错误:
MyProject.Controllers.MyController.Index()
并非所有代码路径都返回值
有什么帮助吗?我想你只是缺少了
return
语句
public ActionResult Index()
{
IEnumerable<Prod> signatures = from Prod in db.Products
select new Prod(Prod.ProductID, Prod.ProductName);
return View(signatures); // this is missing
}
public ActionResult Index()
{
IEnumerable signatures=来自数据库产品中的产品
选择新产品(Prod.ProductID,Prod.ProductName);
返回视图(签名);//缺少此项
}
您缺少返回
元素。您需要将其包装在一个视图中
,这样您的Index razor视图将被传递到Prod列表中
public ActionResult Index()
{
IEnumerable<Prod> signatures = from Prod in db.Products
select new Prod(Prod.ProductID, Prod.ProductName);
return View(signatures); // add this
}
public ActionResult Index()
{
IEnumerable signatures=来自数据库产品中的产品
选择新产品(Prod.ProductID,Prod.ProductName);
返回视图(签名);//添加此
}
在Index.cshtml中,您还可以声明模型,以便视图是强类型的,即
@model IEnumerable<MyProject.Models.Prod>
<table>
@foreach(var prod in Model)
{
<tr>
<td>@prod.ProductID</td>
<td>@prod.ProductName</td>
</tr>
}
</table>
@model IEnumerable
@foreach(模型中的var prod)
{
@产品ID
@prod.ProductName
}
Sami-L,您的Prod类没有专门的构造函数,即接受某些初始化值的构造函数。你的行动应该是这样的:
public ActionResult Index()
{
IEnumerable<Prod> signatures = from p in db.Products
select new Prod
{
ProductId = p.ProductID,
ProductName = p.ProductName
};
return View(signatures);
}
public ActionResult Index()
{
IEnumerable signatures=来自p,单位为db.Products
选择新产品
{
ProductId=p.ProductId,
ProductName=p.ProductName
};
返回视图(签名);
}
请注意大括号“{”而不是“(”大括号)。这将有助于解决您遇到的构造函数错误
更新:我已将LINQ查询中的一个参数从
Prod
重命名为p
。以您指定的方式使用Prod使编译器认为您的ProductID和ProductName是静态属性。通过将参数重命名为from
之后,这将有助于解决问题。@David,是的,当然这是一个愚蠢的错误,我使用了返回视图(签名);它工作了,但在视图级别出现了下一个错误:“LINQ to Entities中只支持无参数构造函数和初始值设定项”。错误点在@foreach(模型中的var项),请帮助我解决这个问题,因为我是MVC新手。@Sami-L向您的产品实体添加一个无参数构造函数(如果您不想公开它,可以将其设置为受保护)@Davintroon,return signatures返回IEnumerable类型的对象,而不是从ActionResult继承的对象。@Husein,那么最后该怎么办?我的视图顶部有这样一个内容:@model IEnumerableCheck out my answer@Sami Lreturn view(签名)通常使用,只需在问题中显示视图即可。一个很好的起点是@jrummell,注意到了,谢谢。我已经尝试了您的建议,但发现错误,非静态字段、方法或属性“MyProject.Models.Prod.ProductID.get”需要对象引用,就是这样@Husein,非常感谢。
public ActionResult Index()
{
IEnumerable<Prod> signatures = from p in db.Products
select new Prod
{
ProductId = p.ProductID,
ProductName = p.ProductName
};
return View(signatures);
}