Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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
ASP.NET核心使用MVC和实体框架-编辑方法不显示值_Asp.net_Asp.net Mvc_Asp.net Core_Asp.net Core Mvc_Asp.net Core 2.1 - Fatal编程技术网

ASP.NET核心使用MVC和实体框架-编辑方法不显示值

ASP.NET核心使用MVC和实体框架-编辑方法不显示值,asp.net,asp.net-mvc,asp.net-core,asp.net-core-mvc,asp.net-core-2.1,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,Asp.net Core 2.1,我正在使用ASP.NETCore(2.1)和MVC以及实体框架来完成我的学校作业 我试图为我的模型添加编辑,但实际上编辑视图的字段仍然为空。 我使用CSHTML中的asp-Controller、asp-action和asp-route-id命令从Admin-Controller索引视图访问这个编辑页面,以调用一个auther-controllers方法。我正在使用ViewBag在管理员控制器的索引页面上显示3个模型 Esemeny.cs using System; using System.C

我正在使用ASP.NETCore(2.1)和MVC以及实体框架来完成我的学校作业

我试图为我的模型添加编辑,但实际上编辑视图的字段仍然为空。

我使用CSHTML中的asp-Controller、asp-action和asp-route-id命令从Admin-Controller索引视图访问这个编辑页面,以调用一个auther-controllers方法。我正在使用ViewBag在管理员控制器的索引页面上显示3个模型

Esemeny.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace MVC_Boldizar.Models
{
    public class Esemeny
    {
        [Key]
        public int EsemenyID { get; set; }
        public string Nev { get; set; }
        public int KezdEv { get; set; }
        public int VegEv { get; set; }
        public string Leiras { get; set; }
    }
}
AdminController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using MVC_Boldizar.Models;

namespace MVC_Boldizar.Controllers
{
    public class AdminController : Controller
    {
        private IEsemenyRepository EsemenyRepository;
        private INyelvismeretRepository NyelvismeretRepository;
        private IProgramozasiIsmeretRepository ProgramozasiIsmeretRepository;
        private IKapcsolatRepository KapcsolatRepository;

        public AdminController(IEsemenyRepository erepo, INyelvismeretRepository nrepo, IProgramozasiIsmeretRepository prepo, IKapcsolatRepository krepo)
        {
            EsemenyRepository = erepo;
            NyelvismeretRepository = nrepo;
            ProgramozasiIsmeretRepository = prepo;
            KapcsolatRepository = krepo;
        }


        public ActionResult Index()
        {
            ViewBag.Esemenyek = GetEsemenyek();
            ViewBag.Nyelvismeretek = GetNyelvismeretek();
            ViewBag.ProgramozasiIsmeretek = GetProgismeretek();
            ViewBag.Kapcsolatok = GetKapcoslatok();
            return View();
        }

        public IEnumerable<Nyelvismeret> GetNyelvismeretek()
        {
            return NyelvismeretRepository.Nyelvismeretek;
        }
        public IEnumerable<Esemeny> GetEsemenyek()
        {
            return EsemenyRepository.Esemenyek;
        }
        public IEnumerable<ProgramozasiIsmeret> GetProgismeretek()
        {
            return ProgramozasiIsmeretRepository.ProgramozasiIsmeretek;
        }
        public IEnumerable<Kapcsolat> GetKapcoslatok()
        {
            return KapcsolatRepository.Kapcsolatok;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using MVC_Boldizar.Models;

namespace MVC_Boldizar.Controllers
{
    public class EsemenyController : Controller
    {

        private IEsemenyRepository EsemenyRepository;
        private INyelvismeretRepository NyelvismeretRepository;
        private IProgramozasiIsmeretRepository ProgramozasiIsmeretRepository;

        public ActionResult Index()
        {
            ViewBag.Esemenyek = GetEsemenyek();
            ViewBag.Nyelvismeretek = GetNyelvismeretek();
            ViewBag.ProgramozasiIsmeretek = GetProgismeretek();
            return View();
        }

        public EsemenyController(IEsemenyRepository erepo, INyelvismeretRepository nrepo, IProgramozasiIsmeretRepository prepo)
        {
            EsemenyRepository = erepo;
            NyelvismeretRepository = nrepo;
            ProgramozasiIsmeretRepository = prepo;
        }


        public IEnumerable<Nyelvismeret> GetNyelvismeretek()
        {
            return NyelvismeretRepository.Nyelvismeretek;
        }
        public IEnumerable<Esemeny> GetEsemenyek()
        {
            return EsemenyRepository.Esemenyek;
        }
        public IEnumerable<ProgramozasiIsmeret> GetProgismeretek()
        {
            return ProgramozasiIsmeretRepository.ProgramozasiIsmeretek;
        }

        public ActionResult CreateEsemeny()
        {
            return View();
        }

        public ActionResult CreaterProg()
        {
            return View();
        }

        public ActionResult CreateNyelv()
        {
            return View();
        }

        public ViewResult EditEsemeny(int esmId) => View(EsemenyRepository.Esemenyek.FirstOrDefault(esm => esm.EsemenyID == esmId));

        public ViewResult EditProg(int proId) => View(ProgramozasiIsmeretRepository.ProgramozasiIsmeretek.FirstOrDefault(pro => pro.ProgramozasiIsmeretID == proId));

        public ViewResult EditNyelv(int nyId) => View(NyelvismeretRepository.Nyelvismeretek.FirstOrDefault(ny => ny.NyelvismeretID == nyId));
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用MVC_Boldizar.Models;
命名空间MVC_Boldizar.Controllers
{
公共类AdminController:Controller
{
私人电子储蓄;
私人储蓄存款;
私人IProgramozasismerepository计划;
私人IKapcsolatRepository KapcsolatRepository;
公共行政总监(IESEMENYREPORATION erepo、INYLEVISMERETREPORATION nrepo、IPROGRAMOZASIISMEREPORATION PREP、IKAPCSOLATREPORATION krepo)
{
EsemenyRepository=erepo;
Nyelvismerepository=nrepo;
programozasismerepository=prep;
KapcsolatRepository=krepo;
}
公共行动结果索引()
{
ViewBag.Esemenyek=GetEsemenyek();
ViewBag.Nyelvismeretek=GetNyelvismeretek();
ViewBag.programozasismeretek=GetProgismeretek();
ViewBag.Kapcsolatok=GetKapcoslatok();
返回视图();
}
公共IEnumerable GetNyelvismeretek()
{
返回nyelvismeretropository.Nyelvismeretek;
}
公共IEnumerable GetEsemenyek()
{
返回EsemenyRepository.Esemenyek;
}
公共IEnumerable GetProgismeretek()
{
返回programozasismeretropository.programozasismeretek;
}
公共IEnumerable GetKapcoslatok()
{
返回kapcsolatrespository.Kapcsolatok;
}
}
}
EsemenyController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using MVC_Boldizar.Models;

namespace MVC_Boldizar.Controllers
{
    public class AdminController : Controller
    {
        private IEsemenyRepository EsemenyRepository;
        private INyelvismeretRepository NyelvismeretRepository;
        private IProgramozasiIsmeretRepository ProgramozasiIsmeretRepository;
        private IKapcsolatRepository KapcsolatRepository;

        public AdminController(IEsemenyRepository erepo, INyelvismeretRepository nrepo, IProgramozasiIsmeretRepository prepo, IKapcsolatRepository krepo)
        {
            EsemenyRepository = erepo;
            NyelvismeretRepository = nrepo;
            ProgramozasiIsmeretRepository = prepo;
            KapcsolatRepository = krepo;
        }


        public ActionResult Index()
        {
            ViewBag.Esemenyek = GetEsemenyek();
            ViewBag.Nyelvismeretek = GetNyelvismeretek();
            ViewBag.ProgramozasiIsmeretek = GetProgismeretek();
            ViewBag.Kapcsolatok = GetKapcoslatok();
            return View();
        }

        public IEnumerable<Nyelvismeret> GetNyelvismeretek()
        {
            return NyelvismeretRepository.Nyelvismeretek;
        }
        public IEnumerable<Esemeny> GetEsemenyek()
        {
            return EsemenyRepository.Esemenyek;
        }
        public IEnumerable<ProgramozasiIsmeret> GetProgismeretek()
        {
            return ProgramozasiIsmeretRepository.ProgramozasiIsmeretek;
        }
        public IEnumerable<Kapcsolat> GetKapcoslatok()
        {
            return KapcsolatRepository.Kapcsolatok;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using MVC_Boldizar.Models;

namespace MVC_Boldizar.Controllers
{
    public class EsemenyController : Controller
    {

        private IEsemenyRepository EsemenyRepository;
        private INyelvismeretRepository NyelvismeretRepository;
        private IProgramozasiIsmeretRepository ProgramozasiIsmeretRepository;

        public ActionResult Index()
        {
            ViewBag.Esemenyek = GetEsemenyek();
            ViewBag.Nyelvismeretek = GetNyelvismeretek();
            ViewBag.ProgramozasiIsmeretek = GetProgismeretek();
            return View();
        }

        public EsemenyController(IEsemenyRepository erepo, INyelvismeretRepository nrepo, IProgramozasiIsmeretRepository prepo)
        {
            EsemenyRepository = erepo;
            NyelvismeretRepository = nrepo;
            ProgramozasiIsmeretRepository = prepo;
        }


        public IEnumerable<Nyelvismeret> GetNyelvismeretek()
        {
            return NyelvismeretRepository.Nyelvismeretek;
        }
        public IEnumerable<Esemeny> GetEsemenyek()
        {
            return EsemenyRepository.Esemenyek;
        }
        public IEnumerable<ProgramozasiIsmeret> GetProgismeretek()
        {
            return ProgramozasiIsmeretRepository.ProgramozasiIsmeretek;
        }

        public ActionResult CreateEsemeny()
        {
            return View();
        }

        public ActionResult CreaterProg()
        {
            return View();
        }

        public ActionResult CreateNyelv()
        {
            return View();
        }

        public ViewResult EditEsemeny(int esmId) => View(EsemenyRepository.Esemenyek.FirstOrDefault(esm => esm.EsemenyID == esmId));

        public ViewResult EditProg(int proId) => View(ProgramozasiIsmeretRepository.ProgramozasiIsmeretek.FirstOrDefault(pro => pro.ProgramozasiIsmeretID == proId));

        public ViewResult EditNyelv(int nyId) => View(NyelvismeretRepository.Nyelvismeretek.FirstOrDefault(ny => ny.NyelvismeretID == nyId));
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用MVC_Boldizar.Models;
命名空间MVC_Boldizar.Controllers
{
公共类EsemenyController:控制器
{
私人电子储蓄;
私人储蓄存款;
私人IProgramozasismerepository计划;
公共行动结果索引()
{
ViewBag.Esemenyek=GetEsemenyek();
ViewBag.Nyelvismeretek=GetNyelvismeretek();
ViewBag.programozasismeretek=GetProgismeretek();
返回视图();
}
公共EsemenyController(IESEMENYREPOSITION erepo、INYLEVISMERETREPOSITION nrepo、IPROGRAMOZASIISMEREPOSITION PREP)
{
EsemenyRepository=erepo;
Nyelvismerepository=nrepo;
programozasismerepository=prep;
}
公共IEnumerable GetNyelvismeretek()
{
返回nyelvismeretropository.Nyelvismeretek;
}
公共IEnumerable GetEsemenyek()
{
返回EsemenyRepository.Esemenyek;
}
公共IEnumerable GetProgismeretek()
{
返回programozasismeretropository.programozasismeretek;
}
公共行动结果CreateSemeny()
{
返回视图();
}
public ActionResult createrplog()
{
返回视图();
}
公共行动结果CreateNyelv()
{
返回视图();
}
公共视图结果编辑器esemeny(int-esmId)=>View(EsemenyRepository.Esemenyek.FirstOrDefault(esm=>esm.EsemenyID==esmId));
public View result EditProg(int proId)=>View(programozasismeretrepository.programozasismeretek.FirstOrDefault(pro=>programozasismeretid==proId));
public ViewResult EditNyelv(int nyId)=>View(NyelvismeretRepository.Nyelvismeretek.FirstOrDefault(ny=>ny.NyelvismeretID==nyId));
}
}
IEsemenyRepository.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace MVC_Boldizar.Models
{
    public interface IEsemenyRepository
    {
        IEnumerable<Esemeny> Esemenyek { get; }

        Esemeny GetEsemenyById(int id);

        void SaveEsemeny(Esemeny esemeny);
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace MVC_Boldizar.Models
{
    public class EFEsemenyRepository : IEsemenyRepository
    {
        private ApplicationDbContext context;

        public EFEsemenyRepository(ApplicationDbContext ctx)
        {
            context = ctx;
        }

        public IEnumerable<Esemeny> Esemenyek => context.Esemenyek;

        public Esemeny GetEsemenyById(int id)
        {
            return context.Esemenyek.Find(id);
        }

        public void SaveEsemeny(Esemeny esemeny)
        {
            if(esemeny.EsemenyID == 0)
            {
                context.Esemenyek.Add(esemeny);
            }
            else
            {
                Esemeny dbEsemeny = context.Esemenyek.FirstOrDefault(esm => esm.EsemenyID == esemeny.EsemenyID);
                if( dbEsemeny != null)
                {
                    dbEsemeny.Nev = esemeny.Nev;
                    dbEsemeny.Leiras = esemeny.Leiras;
                    dbEsemeny.KezdEv = esemeny.KezdEv;
                    dbEsemeny.VegEv = esemeny.VegEv;
                }
            }
            context.SaveChanges();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
名称空间MVC_Boldizar.Models
{
公共接口IEsemenyRepository
{
IEnumerable Esemenyek{get;}
Esemeny GetEsemenyById(int-id);
无效保存Esemeny(Esemeny Esemeny);
}
}
EFEsemenyRepository.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace MVC_Boldizar.Models
{
    public interface IEsemenyRepository
    {
        IEnumerable<Esemeny> Esemenyek { get; }

        Esemeny GetEsemenyById(int id);

        void SaveEsemeny(Esemeny esemeny);
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace MVC_Boldizar.Models
{
    public class EFEsemenyRepository : IEsemenyRepository
    {
        private ApplicationDbContext context;

        public EFEsemenyRepository(ApplicationDbContext ctx)
        {
            context = ctx;
        }

        public IEnumerable<Esemeny> Esemenyek => context.Esemenyek;

        public Esemeny GetEsemenyById(int id)
        {
            return context.Esemenyek.Find(id);
        }

        public void SaveEsemeny(Esemeny esemeny)
        {
            if(esemeny.EsemenyID == 0)
            {
                context.Esemenyek.Add(esemeny);
            }
            else
            {
                Esemeny dbEsemeny = context.Esemenyek.FirstOrDefault(esm => esm.EsemenyID == esemeny.EsemenyID);
                if( dbEsemeny != null)
                {
                    dbEsemeny.Nev = esemeny.Nev;
                    dbEsemeny.Leiras = esemeny.Leiras;
                    dbEsemeny.KezdEv = esemeny.KezdEv;
                    dbEsemeny.VegEv = esemeny.VegEv;
                }
            }
            context.SaveChanges();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
名称空间MVC_Boldizar.Models
{
公共类EFEsemenyRepository:IEsemenyRepository
{
私有应用程序上下文上下文;
公共EFEsemenyRepository(ApplicationDbContext ctx)
{
上下文=ctx;
}
public IEnumerable Esemenyek=>context.Esemenyek;
公共Esemeny GetEsemenyById(int-id)
{
返回context.Esemenyek.Find(id);
}
公共无效保存Esemeny(Esemeny Esemeny)
{
如果(esemeny.EsemenyID==0)
{
context.Esemenyek.Add(esemeny);
}
其他的
{
Esemeny dbEsemeny=context.Esemenyek.FirstOrDefault(esm=>esm.EsemenyID==Esemeny.EsemenyID);
if(dbEsemeny!=null)
{
dbEsemeny.Nev=esemeny.Nev;
dbEsemeny.Leiras=esemeny.Leiras;
dbEsemeny.KezdEv=esemeny.KezdEv;
dbEsemeny.VegEv=esemeny.VegEv;
}
}
SaveChanges();
}
}
}
AdminController的Index.cshtml

@using MVC_Boldizar
@model MVC_Boldizar.Models.ViewModels.Szerkesztes

@{
    ViewData["Title"] = "Index";
}

<h2>Index</h2>

<p>
    <a asp-action="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>Események</th>
        </tr>
    </thead>
    <tbody>
        @foreach (Esemeny esm in ViewBag.Esemenyek)
        {
        <tr>
            <td>
                @esm.EsemenyID
            </td>
            <td>
                @esm.Nev
            </td>
            <td>
                @esm.Leiras
            </td>
            <td>
                @esm.KezdEv
            </td>
            <td>
                @esm.VegEv
            </td>
            <td>
                <a asp-controller="Esemeny" asp-action="EditEsemeny" asp-route-EsemenyID="@esm.EsemenyID">Edit</a> |
                <a asp-action="Details" asp-route-id="@esm.EsemenyID">Details</a> |
                <a asp-action="Delete" asp-route-id="@esm.EsemenyID">Delete</a>
            </td>
        </tr>
        }
    </tbody>
</table>
<hr />
<p>
    <a asp-action="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>Nyelvismeretek</th>
        </tr>
    </thead>
    <tbody>
        @foreach (Nyelvismeret esm in ViewBag.Nyelvismeretek)
        {
            <tr>
                <td>
                    @esm.Nev
                </td>
                <td>
                    <a asp-controller="Esemeny" asp-action="EditNyelv" asp-route-id="@esm.NyelvismeretID">Edit</a> |
                    <a asp-action="Details" asp-route-id="@esm.NyelvismeretID">Details</a> |
                    <a asp-action="Delete" asp-route-id="@esm.NyelvismeretID">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>
<hr />
<p>
    <a asp-action="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>Programozási ismeretek</th>
        </tr>
    </thead>
    <tbody>
        @foreach (ProgramozasiIsmeret esm in ViewBag.ProgramozasiIsmeretek)
        {
            <tr>
                <td>
                    @esm.Nev
                </td>
                <td>
                    <a asp-controller="Esemeny" asp-action="EditProg" asp-route-id="@esm.ProgramozasiIsmeretID">Edit</a> |
                    <a asp-action="Details" asp-route-id="@esm.ProgramozasiIsmeretID">Details</a> |
                    <a asp-action="Delete" asp-route-id="@esm.ProgramozasiIsmeretID">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>
<hr />
<p>
    <a asp-controller="Kapcsolat" asp-action="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>Kapcsolatok</th>
        </tr>
    </thead>
    <tbody>
        @foreach (Kapcsolat esm in ViewBag.Kapcsolatok)
        {
            <tr>
                <td>
                    @esm.Nev
                </td>
                <td>
                    <a asp-action="Edit" asp-route-id="@esm.KapcsolatID">Edit</a> |
                    <a asp-action="Details" asp-route-id="@esm.KapcsolatID">Details</a> |
                    <a asp-action="Delete" asp-route-id="@esm.KapcsolatID">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>
@使用MVC\u Boldizar
@MVC_Boldiz型
<a asp-controller="Esemeny" asp-action="EditEsemeny" asp-route-EsmId="@esm.EsmId">Edit</a>