Не удалось преобразовать нормальный класс C # в класс модели MVC - PullRequest
0 голосов
/ 06 июня 2019

Класс C # -

namespace BAL
{
    public class TargetMasterBAL
    {
        public Int32 TargetMasterID { get; set; }
        public Double TargetAmount { get; set; }
        public DateTime ValidFrom { get; set; }
        public DateTime ValidTo { get; set; }
        public Boolean IsActive { get; set; }
        public string CreatedBy { get; set; }
        public DateTime CreatedDate { get; set; }
        public string ModifiedBy { get; set; }
        public DateTime? ModifiedDate { get; set; }
    }
}

Класс C # Унаследовано в моделях MVC -

using BAL;

namespace MVCWeb.Models
{
    public class TargetMaster : TargetMasterBAL
    {
    }
}

.cshtml страница -

@model IEnumerable<MVCWeb.Models.TargetMaster>

    @{
        ViewBag.Title = "HomeScreen";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

код контроллера -

using System.Web.Mvc;
using MVCWeb.Models;

namespace MVCWeb.Controllers.Target
{
    public class TargetMasterController : Controller
    {
        public ActionResult HomeScreen()
        {
            try
            {
                List<TargetMaster> lstTargetMasters1 = new List<TargetMaster>();

                var s = DAL.TargetMasterDAL.getTargetMasters(null, null, null, 1, 1000, false);

                return View(s);

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

Сообщение об ошибке:

Ошибка сервера в приложении '/'.
Элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List`1 [BAL.TargetMasterBAL] ', но для этого словаря требуется элемент модели типа' System.Collections.Generic.IEnumerable`1 [MVCWeb.Models.TargetMaster] '.Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: Переданный в словарь элемент модели имеет тип 'System.Collections.Generic.List`1 [BAL.TargetMasterBAL] ', но для этого словаря требуется элемент модели типа' System.Collections.Generic.IEnumerable`1 [MVCWeb.Models.TargetMaster] '.

Ответы [ 2 ]

2 голосов
/ 06 июня 2019

Вам необходимо конвертировать возвращаемые товары в нужный тип.

//...

List<TargetMaster> lstTargetMasters1 = s.Select(_ => new TargetMaster {
        TargetMasterID = _.TargetMasterID,
        //...other properties
    })
    .ToList();
return View(lstTargetMasters1);

//...
1 голос
/ 06 июня 2019

Ошибка, которую вы получаете, заключается в том, что вы не можете явно указать parent object в child reference variable. Смотрите детали вашего исключения.

Сведения об исключении: System.InvalidOperationException: переданный в словарь элемент модели имеет тип 'System.Collections.Generic.List 1[BAL.TargetMasterBAL]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [MVCWeb.Models.TargetMaster]'.

Чтобы решить эту проблему, измените параметр вашего метода на IEnumerable<TargetMasterBAL>

С другой стороны

Приведите свой список к TargetMaster списку, как показано ниже

List<TargetMaster> list = (List<TargetMaster>) new List<TargetMasterBAL>;

И почему вы создаете дополнительный класс TargetMaster, унаследованный от TargetMasterBAL, если вы не добавляете свойства в класс TargetMaster?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...