Не удается неявно преобразовать тип MVC.Table1 в MVC.Models.prodInfo - PullRequest
0 голосов
/ 25 сентября 2018

Я работаю с ASP.Net MVC, только начинающий.Пытаясь получить хорошее понимание этого.Однако я получаю эту ошибку:

Не удается неявно преобразовать тип MVC.Table1 в MVC.Model.prodInfo

Вот мой код:

Модель

namespace MVC.Models
{
    public class Sample
    {
        Database_Entity db;

        public Sample()
        {
            db = new Database_Entity();
        }

        public List<prodInfo> getStuff()
        {

            var que = (from wr in db.Table1
                       join wrc in db.Table2 on wr.ID equals wrc.ID
                       join cd in db.Table3 on wrc.ID equals cd.ID
                       select new prodInfo
                       {
                           Short_ID = wr.ID,
                           Planned_Date = cd.Planned_Date.ToString(),
                           Actual_Date = cd.Actual_Date.ToString()
                       }).ToList();
            return que;
        }
    }

    public class prodInfo
    {
        public string Short_ID { get; set; }
        public string Planned_Date { get; set; }
        public string Actual_Date { get; set; }
    }
}

Контроллер

Здесь возникает ошибка в методе Edit (String ID) ..

namespace MVC.Controllers
{
    public class HelloController : Controller
    {
        Database_Entity db;
        // GET: Hello
        public ActionResult Index()
        {
            Sample sam = new Sample();
            return View(sam.getStuff());
        }

        public ActionResult Edit(string ID)
        {
            if (ID == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);  
            }
            prodInfo item = db.Table1.Find(ID);
            if (item == null)
            {
                return HttpNotFound();
            }
            return View(item);
        }

        [HttpPost]
        public ActionResult Edit(prodInfo model)
        {
            if (ModelState.IsValid)
            {
                db.Entry(model).State = System.Data.Entity.EntityState.Modified;
                return RedirectToAction("Index");
            }

            return View(model);
        } 

    }

prodInfo item = db.Table1.Find (ID); Эта строка вызывает ошибку.Я не понимаю, что не так, Если кто-нибудь может мне помочь, это было бы здорово.При необходимости я добавлю класс View в правку.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Создайте новый метод в вашем классе Sample:

    public prodInfo GetProdInfo(string ID)
    {
        var pInfo = (from wr in db.Table1
                   join wrc in db.Table2 on wr.ID equals wrc.ID
                   join cd in db.Table3 on wrc.ID equals cd.ID
                   select new prodInfo
                   {
                       Short_ID = wr.ID,
                       Planned_Date = cd.Planned_Date.ToString(),
                       Actual_Date = cd.Actual_Date.ToString()
                   }).FirstOrDefault(x=>x.Short_ID == ID);
        return pInfo;
    }

и измените ваш метод Edit в HomeController, вызвав новый метод:

var result = sam.GetProdInfo(ID);
0 голосов
/ 26 сентября 2018

Хорошо!Если вы хотите получить данные из базы данных, используя Entity-Framework, тип возвращаемого типа данных - DatabaseModel.

. Для фиксированного режима вы должны получить данные типа var и отобразить их на свой объект.как:

namespace MVC.Controllers
{
    public class HelloController : Controller
    {
        Database_Entity db;
        // GET: Hello
        public ActionResult Index()
        {
            Sample sam = new Sample();
            return View(sam.getStuff());
        }

        public ActionResult Edit(string ID)
        {
            if (ID == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);  
            }
            var result = db.Table1.Find(ID);
            if (item == null)
            {
                return HttpNotFound();
            }
            return View(new prodInfo(){
                                /////
                                });
        }

        [HttpPost]
        public ActionResult Edit(prodInfo model)
        {
            if (ModelState.IsValid)
            {
                db.Entry(model).State = System.Data.Entity.EntityState.Modified;
                return RedirectToAction("Index");
            }

            return View(model);
        } 

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