Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net将ViewModel传递给视图(底层实体框架)_C#_Asp.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# ASP.Net将ViewModel传递给视图(底层实体框架)

C# ASP.Net将ViewModel传递给视图(底层实体框架),c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,将ViewModel传递到视图时遇到问题 我的ViewModel: namespace ImpactDBASPNet.Models { public class ComputerInfoViewModel { public List<string> CompanyList { get; set; } public tbl_computerinfo entitymodeleffort { get; set; } } } 命名空间

将ViewModel传递到视图时遇到问题

我的ViewModel:

namespace ImpactDBASPNet.Models
{
    public class ComputerInfoViewModel
    {
        public List<string> CompanyList { get; set; }
        public tbl_computerinfo entitymodeleffort { get; set; }
    }
}
命名空间影响dbaspnet.Models
{
公共类计算机信息视图模型
{
公共列表公司列表{get;set;}
公共tbl_computerinfo EntityModelefort{get;set;}
}
}
控制器:

    public ActionResult Index()
    {
        var tbl_computerinfo = db.tbl_computerinfo.Include(t => t.tbl_equipment);
        tbl_computerinfo = tbl_computerinfo.Where(c => c.Company == "Test Company");

        List<string> companylist = new List<string>();
        companylist.Add("Hello1");
        companylist.Add("hello2");

        ComputerInfoViewModel model = new ComputerInfoViewModel();
        model.CompanyList = companylist;
        model.entitymodeleffort = tbl_computerinfo;

        return View(model);
    }
public ActionResult Index()
{
var tbl_computerinfo=db.tbl_computerinfo.Include(t=>t.tbl_设备);
tbl_computerinfo=tbl_computerinfo.其中(c=>c.公司==“测试公司”);
List companylist=新列表();
公司列表添加(“Hello1”);
公司列表。添加(“hello2”);
ComputerInfoViewModel=新的ComputerInfoViewModel();
model.CompanyList=CompanyList;
model.entitymodeleffort=tbl_computerinfo;
返回视图(模型);
}
我这样做主要是因为我需要在视图中为dropdownlist传递一个列表,所以我需要传递实体框架模型和列表。我得到的错误是:

Error   1   Cannot implicitly convert type 'System.Linq.IQueryable<ImpactDBASPNet.Models.tbl_computerinfo>' to 'ImpactDBASPNet.Models.tbl_computerinfo'. An explicit conversion exists (are you missing a cast?)    c:\impactdbaspnet\controllers\tbl_computerinfocontroller.cs 31  39  ImpactPortal
错误1无法将类型“System.Linq.IQueryable”隐式转换为“ImpactDBASPNet.Models.tbl\u computerinfo”。存在显式转换(是否缺少转换?)c:\impactdbaspnet\controllers\tbl\u computerinfocontroller.cs 31 39 ImpactPortal

属性
entitymodelefort
tbl\u computerinfo
的类型,但您将
IEnumerable
赋值给它,导致错误。您需要使用
FirstOrDefault()
(或其中一个变体-
Single()
等)返回单个
tbl\U computerinfo
对象

将代码更改为

public ActionResult Index()
{
  var tbl_computerinfo = db.tbl_computerinfo
   .Include(t => t.tbl_equipment)
   .Where(c => c.Company == "Test Company")
   .FirstOrDefault();
  List<string> companylist = new List<string>() { "Hello1", "Hello2" }; // save a few lines of code
  ComputerInfoViewModel model = new ComputerInfoViewModel();
  model.CompanyList = companylist;
  model.entitymodeleffort = tbl_computerinfo;
  return View(model);
}

在我看来

@Html.DropDownListFor(m => m.entitymodeleffort.SomeProperty, Model.CompanyList, ...)

您的
.Where
子句生成
IEnumerable
。将
.FirstOrDefault()
添加到末尾以返回单个
tbl\u computerinfo
(您可能需要测试
null
)谢谢您的回复,Stephen。这会产生刚刚反转的相同错误,即无法将ImpactDBASPNet.Models.tbl_computerinfo隐式转换为System.Linq.Iqueryabletbl_computerinfo)它还保留了我最初存在的错误,因此现在有两个错误,而不是一个。没有意义。您是否执行了
tbl_computerinfo=tbl_computerinfo.Where(c=>c.Company==“Test Company”).FirstOrDefault()?好的,可以看到问题-您需要更改一个变量名(第一行返回
IEnumerable
,但在第二行中,您试图将同一个变量更改为
tbl\U computerinfo
)。而是做
var info=db.tbl\u computerinfo.Include(t=>t.tbl\u设备);tbl_computerinfo=info.Where(c=>c.Company==“测试公司”).FirstOrDefault()斯蒂芬,成功了。非常感谢你的帮助。如果你想把它变成一个答案,我会把它标记为决议!
model.CompanyList = new SelectList(companylist);
@Html.DropDownListFor(m => m.entitymodeleffort.SomeProperty, Model.CompanyList, ...)