У меня есть отдельный проект визуальной студии, где я храню свою базу данных (EF6). Итак, мои объекты находятся в пространстве имен Name1 (созданная базой данных Ef6 первых, но упрощенное ниже, для данного примера):свойства и метаданные в базовом классе в разных пространствах имен
namespace Name1 {
public class Person
{
public string FName {get; set;}
public string LName {get; set;}
}
}
Теперь, я создал новый проект MVC 5, и сделал ссылку на данные визуальных Studio, так что я могу получить доступ к объектам. В моем mvc5 проекте я хочу добавить некоторые метаданные в сущности, как это:
namespace NameMvc
{
[MetadataType(typeof(PersonMetaData))]
public class Person : Name1.Person
{
}
public class PersonMetaData
{
[Display(Name = "Firstname")]
public string FName;
}
}
В мой контроллер я хочу, чтобы все лица, поэтому у меня есть такое действие, как это:
using Name1;
using NameMvc;
-- controller class code
public ActionResult Index()
{
var persons = db.Person.ToList();
return View(persons);
}
-- controller class code
И на мой взгляд, я пытаюсь получить доступ, что с помощью:
@model IEnumerable<NameMvc.Person>
Теперь, когда я запускаю код, я получаю сообщение об ошибке:
Элемент модели, переданный в словарь, имеет тип «System.Data.Entity.Infrastructure.DbQuery 1[Name1.Person]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [Name.MvcPerson] '. Я, вероятно, что-то не так сделал в действии, потому что db.Person происходит из пространства имен Name1. То, что я хочу, чтобы использовать метаданные, на мой взгляд, так что, когда я делаю что-то вроде этого:
@Html.DisplayNameFor(model => model.FName)
Виль привести Firstname
Вы добавили 'Name1'' пространство имен в свой вид? –
@ teo-van-kot Зачем мне это делать? У меня есть ссылка в файле, где я написал свой открытый класс Person: Name1.Person {}. Когда я использую частичный класс в том же пространстве имен, легко добавить файл метаданных, но теперь класс (Name1.Person) находится в другом пространстве имен, где мне не разрешено управлять кодом. – kwv84