【发布时间】:2015-09-19 14:34:04
【问题描述】:
Views/Home 中有一个文件:Opinion.cshtml。
@model Aquapark.ViewModels.OpinionViewModel
@{
ViewBag.Title = "Opinia";
Layout = "~/Views/Shared/_StoreLayout.cshtml";
}
<h2>Opinia</h2>
<div style="margin-top: 20px; line-height: 22px;">
<div class="opinion-box">
@foreach (var opinions in Model.Opinions)
{
<div class="opinion-box-content">
<div class="opinion-box-content-inside">@opinions.Content</div>
<div class="date">@opinions.Date</div>
</div>
<div class="opinion-author">@opinions.PersonId</div>
}
</div>
</div>
我在 ViewModel 文件夹中有文件:OpinionViewModel.cs(已创建)。
using Aquapark.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Aquapark.ViewModels
{
public class OpinionViewModel
{
public IEnumerable<Opinion> Opinions { get; set; }
public IEnumerable<Person> Authors { get; set; }
}
}
Person.cs
namespace Aquapark.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("Person")]
public partial class Person
{
[Key]
public int PersonId { get; set; }
[Required]
public long Pesel { get; set; }
[Required]
[StringLength(30, ErrorMessage = "Imię nie może zawierać więcej niż 30 znaków.")]
[Display(Name = "Imię")]
public string FirstName { get; set; }
[Required]
[StringLength(60, ErrorMessage = "Nazwisko nie może zawierać wiecej niż 60 znaków.")]
[Display(Name = "Nazwisko")]
public string LastName { get; set; }
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd/mm/yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Data urodzenia")]
public DateTime DateOfBirth { get; set; }
public virtual Client Client { get; set; }
public virtual Employee Employee { get; set; }
public string FullName
{
get
{
return FirstName + " " + LastName;
}
}
}
}
HomeController.cs
public class HomeController : Controller
{
private AquaparkContext db = new AquaparkContext();
// GET: Home
public ActionResult Index()
{
var opinions = db.Opinion.ToList();
//var randomOpinions = db.Opinion.Where(a => a.Date >= DateTime.Parse("2015-01-01")).OrderBy(g => Guid.NewGuid()).Take(6).ToList();
var authors = from p in db.Person
join o in db.Opinion
on p.PersonId equals o.PersonId
select new
{
p.FullName
};
var vm = new OpinionViewModel()
{
Opinions = opinions,
//Authors = authors,
};
return View(vm);
}
public ActionResult StaticContent(string viewname)
{
return View(viewname);
}
问题: 我想显示意见的作者(名字和姓氏)。我尝试使用 LINQ 选择数据(HomeController var authors),但我无法将其归因于集合 Authors,因为出现错误。
错误 2 无法隐式转换类型 'System.Linq.IQueryable' 到 'System.Collections.Generic.IEnumerable'。一个 存在显式转换(您是否缺少演员表?) C:\Users\Asus N551\OneDrive\Documents\Aquapark\Aquapark\Controllers\HomeController.cs 31 27 Aquapark
如何正确解决问题?
【问题讨论】:
-
您有两个问题:您没有使用
ToList()或其他适合authors的方法,并且您也只选择了p.FullName并期望得到Person的类型。
标签: c# .net asp.net-mvc linq view