如何在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.
   }

请帮忙。

如何在ASP.NET-MVC中将匿名类型绑定到viewModel

不要让您的选择查询匿名,只需像一样用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();