如何在ASP.NET-MVC中将匿名类型绑定到viewModel
本文关键字:类型 绑定 viewModel ASP NET-MVC | 更新日期: 2023-09-27 17:57:28
我需要将匿名类型输出绑定到viewmodel,以便在视图中传递它。需要的是,我必须将复选框与模型值绑定,我正在使用join获取值,但不知道如何将其传递给view。我的加入查询是
var v = (from pd in ge.Costs
join od in ge.Services on pd.ServiceId equals od.ServiceId
join ct in ge.ServiceTypes on pd.ServiceTypeId equals ct.ServiceTypeId
where pd.ServiceTypeId.Equals(2)
select new
{
pd.CostId,
od.serviceName,
ct.ServiceTypeValue,
pd.ServiceCost
}).ToList();
我的视图型号是
public class costViewModel
{
public int CostId { get; set; }
public string serviceName { get; set; }
public string ServiceTypeValue { get; set; }
public string ServiceCost { get; set; }
}
我需要将CostId、serviceName、ServiceTypeValue、ServiceCost绑定到视图模型,以便在视图中传递它
检索视图中的模型是
@foreach (var item in Model)
{
<input type="checkbox" name="@item.serviceName" id="@item.serviceName" value="@item.ServiceCost">@item.
}
请帮忙。
不要让您的选择查询匿名,只需像一样用viewModed传递您的选择即可
var v = (from pd in ge.Costs
join od in ge.Services on pd.ServiceId equals od.ServiceId
join ct in ge.ServiceTypes on pd.ServiceTypeId equals ct.ServiceTypeId
where pd.ServiceTypeId.Equals(2)
select new costViewModel()
{
CostId = pd.CostId,
serviceName = od.serviceName,
ServiceTypeValue = ct.ServiceTypeValue,
ServiceCost = pd.ServiceCost
}).ToList();
view(v);
然后在视图模型中传递v
在查看页面上使用
@model IEnumerable<project.ViewModel.costViewModel>
尝试使用costViewModel
将值传递到View中,因此简而言之,不要让select
保持匿名,创建一些所需的对象并将v
传递到View:
在控制器中:
var v = (from pd in ge.Costs
join od in ge.Services on pd.ServiceId equals od.ServiceId
join ct in ge.ServiceTypes on pd.ServiceTypeId equals ct.ServiceTypeId
where pd.ServiceTypeId.Equals(2)
select new costViewModel()
{
CostId = pd.CostId,
serviceName = od.serviceName,
ServiceTypeValue = ct.ServiceTypeValue,
ServiceCost = pd.ServiceCost
}).ToList();
return View(v);
在您看来:
@model List<costViewModel>
var v = (from pd in ge.Costs
join od in ge.Services on pd.ServiceId equals od.ServiceId
join ct in ge.ServiceTypes on pd.ServiceTypeId equals ct.ServiceTypeId
where pd.ServiceTypeId.Equals(2)
select new costViewModel
{
CostId = pd.CostId,
serviceName = od.serviceName,
ServiceTypeValue = ct.ServiceTypeValue,
ServiceCost = pd.ServiceCost
}).ToList();
或匿名
var v = (from pd in ge.Costs
join od in ge.Services on pd.ServiceId equals od.ServiceId
join ct in ge.ServiceTypes on pd.ServiceTypeId equals ct.ServiceTypeId
where pd.ServiceTypeId.Equals(2)
select new
{
CostId = pd.CostId,
serviceName = od.serviceName,
ServiceTypeValue = ct.ServiceTypeValue,
ServiceCost = pd.ServiceCost
}).ToList();