Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 传递到字典中的模型项的类型为“ViewModels.SiteModel”,_Asp.net Mvc_Entity Framework 4_Razor - Fatal编程技术网

Asp.net mvc 传递到字典中的模型项的类型为“ViewModels.SiteModel”,

Asp.net mvc 传递到字典中的模型项的类型为“ViewModels.SiteModel”,,asp.net-mvc,entity-framework-4,razor,Asp.net Mvc,Entity Framework 4,Razor,我是MVC架构的新手。当我尝试更新时,它显示错误,这很奇怪,但数据正在更新 传递到字典中的模型项的类型为“CMS.Domain.Models.Site”,但此字典需要类型为“CMS.Web.ViewModels.SiteModel”的模型项 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源 异常详细信息:System.InvalidOperationException:传递到字典的模型项的类型为“CMS.Web.ViewModels.Si

我是MVC架构的新手。当我尝试更新时,它显示错误,这很奇怪,但数据正在更新

传递到字典中的模型项的类型为“CMS.Domain.Models.Site”,但此字典需要类型为“CMS.Web.ViewModels.SiteModel”的模型项

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.InvalidOperationException:传递到字典的模型项的类型为“CMS.Web.ViewModels.SiteModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable”“1[CMS.Web.ViewModels.SiteModel]”的模型项

我的代码如下所示:

视图模型:

namespace CMS.Web.ViewModels
{
    public class SiteModel
    {

        public SiteModel()
        {
            SiteStatus = new List<SelectListItem>();
        }

        [Key]
        public int ID { get; set; }

        [Required(ErrorMessage = "Site Name is required")]
        [Display(Name = "Site Name")]
        public string Title { get; set; }


        [Display(Name = "Require Login")]
        public bool RequiresLogin { get; set; }

        [Display(Name = "Force HTTPS")]
        public bool ForceHTTPS { get; set; }

        [Display(Name = "Enable Approval")]
        public bool Approval { get; set; }

        [AllowHtml]
        public IList<SelectListItem> SiteStatus { get; set; }

        public bool Deleted { get; set; }

        public string CreatedBy { get; set; }

        public DateTime CreatedOn
        {
            get { return _createdOn; }
            set { _createdOn = value; }
        }
        private DateTime _createdOn = DateTime.Now;

        public string LastUpdatedBy { get; set; }

        public DateTime LastUpdatedOn  
        {
            get { return _lastUpdatedOn; }
            set { _lastUpdatedOn = value; }
        }
        private DateTime _lastUpdatedOn = DateTime.Now;

        [Display(Name = "Site State")]
        public string SiteState { get; set; }

    }
}
控制器:

 public ActionResult Index()
        {
            var _sites = _siterepository.FindAll();
            return View(_sites);
        }

        public ActionResult Add()
        {
            var model = new SiteModel();
            var _SiteStatus = _siterepository.GetSiteStatus();
            foreach (var _sitestatus in _SiteStatus)
            {
                model.SiteStatus.Add(new SelectListItem()
                { 
                    Text = _sitestatus.StatusName, 
                    Value = _sitestatus.StatusName.ToString()
                });

            }
            return View(model);
        }

        [HttpPost]
        public ActionResult Add(SiteModel _sitemodel)
        {
            var model = _sitemodel.ToEntity();
            _siterepository.Add(model);
            return View(model);
        }

        public ActionResult Edit(int id)
        {
            var model = new SiteModel();
            var Site = _siterepository.Find(id);
            model = Site.ToModel();
            var _SiteStatus = _siterepository.GetSiteStatus();

            foreach (var _sitestatus in _SiteStatus)
            {
                model.SiteStatus.Add(new SelectListItem()
                {
                    Text = _sitestatus.StatusName,
                    Value = _sitestatus.StatusName.ToString(),
                    Selected = _sitestatus.StatusName == Site.SiteStatus
                });

            }

            return View(model);
        }

        [HttpPost]
        public ActionResult Edit(SiteModel _sitemodel)
        {
            var model = _sitemodel.ToEntity();
            _siterepository.Update(model);
            return View(model);
        }

我正在努力解决此问题,请帮助。

检查视图的模型声明。它需要一个可枚举列表IEnumerable,但您正在向它传递CMS.Web.ViewModels.SiteModel的单个实例,请检查视图的模型声明。它需要一个可枚举列表IEnumerable,但您正在向它传递一个CMS.Web.ViewModels.SiteModel的实例

我没有找到更改代码的确切位置,是否需要更改它ActionResult索引视图。Index.cstml中的代码如下所示code@modelIEnumerablecodecode@foreach模型{}code中的var项取决于您试图完成的任务。如果视图需要显示SiteModel的可枚举列表,则将操作方法返回值更改为返回Viewnew list{model};如果视图显示的是单个站点模型,请将视图的cshtml模型声明更改为@model inPowerCMS.Domain.Models.SiteModel我没有找到更改代码的确切位置,是否需要将其更改为ActionResult索引视图。Index.cstml中的代码如下所示code@modelIEnumerablecodecode@foreach模型{}code中的var项取决于您试图完成的任务。如果视图需要显示SiteModel的可枚举列表,则将操作方法返回值更改为返回Viewnew list{model};如果视图显示的是单个站点模型,请将视图的cshtml模型声明更改为@model inPowerCMS.Domain.Models.SiteModel
 public ActionResult Index()
        {
            var _sites = _siterepository.FindAll();
            return View(_sites);
        }

        public ActionResult Add()
        {
            var model = new SiteModel();
            var _SiteStatus = _siterepository.GetSiteStatus();
            foreach (var _sitestatus in _SiteStatus)
            {
                model.SiteStatus.Add(new SelectListItem()
                { 
                    Text = _sitestatus.StatusName, 
                    Value = _sitestatus.StatusName.ToString()
                });

            }
            return View(model);
        }

        [HttpPost]
        public ActionResult Add(SiteModel _sitemodel)
        {
            var model = _sitemodel.ToEntity();
            _siterepository.Add(model);
            return View(model);
        }

        public ActionResult Edit(int id)
        {
            var model = new SiteModel();
            var Site = _siterepository.Find(id);
            model = Site.ToModel();
            var _SiteStatus = _siterepository.GetSiteStatus();

            foreach (var _sitestatus in _SiteStatus)
            {
                model.SiteStatus.Add(new SelectListItem()
                {
                    Text = _sitestatus.StatusName,
                    Value = _sitestatus.StatusName.ToString(),
                    Selected = _sitestatus.StatusName == Site.SiteStatus
                });

            }

            return View(model);
        }

        [HttpPost]
        public ActionResult Edit(SiteModel _sitemodel)
        {
            var model = _sitemodel.ToEntity();
            _siterepository.Update(model);
            return View(model);
        }