C# ASP.NET MVC:将查询数据传输到控制器中的模型类对象
我有一个连接的查询C# ASP.NET MVC:将查询数据传输到控制器中的模型类对象,c#,asp.net-mvc,entity-framework,viewmodel,C#,Asp.net Mvc,Entity Framework,Viewmodel,我有一个连接的查询 var DetailsQuery = (from a in db.aTable join b in db.bTable on a.carID equals b.ID where a.ID==id select new
var DetailsQuery = (from a in db.aTable
join b in db.bTable on a.carID equals b.ID
where a.ID==id
select new
{
ID = a.ID != null ? a.ID : 0,
aName= a.aName,
carName= b.carName,
}).Take(1);
使用Take(1)
是否正确?实际上,任何方法都必须只有一行具有这样的ID,所以我应该编写这个Take(1)
,否则它将在没有它的情况下工作吗
现在,我为视图创建了一个新的模型类
public class ModifiedaTableModel
{
[Key]
[Required(ErrorMessage = "aIDis required.")]
public int aID{ get; set; }
[Required(ErrorMessage = "aName required.")]
public string aName{ get; set; }
[Required(ErrorMessage = "carName required.")]
public string carName{ get; set; }
}
如何将此查询对象传输到此模型,以便在视图中显示它
var DetailsQuery = (from a in db.aTable
join b in db.bTable on a.carID equals b.ID
where a.ID==id
select new
{
ID = a.ID != null ? a.ID : 0,
aName= a.aName,
carName= b.carName,
}).FirstOrDefault();
要在视图中使用视图模型,请执行以下操作:
@model <your project name>.ViewModels.ModifiedaTableModel;
@model.ViewModels.ModifiedaTableModel;
假设您的视图模型类位于“ViewModels”文件夹中。控制器:
var DetailsQuery = from a in db.aTable
join b in db.bTable on a.carID equals b.ID
where a.ID == id
select new ModifiedaTableModel
{
ID = a.ID != null
? a.ID
: 0,
aName = a.aName,
carName = b.carName
});
return View(DetailsQuery.FirstOrDefault());
视图(可能需要模型的命名空间):
如果仅选择匿名类型对象,则视图渲染期间可能会发生InvalidOperationException。如果您不确定是否可以获得整个结果,请检查它是否不止一个,记录一些错误或其他内容,然后选择
.First()
。
@model ModifiedaTableModel