我知道這個問題被問了很多次。我已閱讀並實施所有解決方案,但未取得成功。我在使用EF檢索數據庫中的數據時遇到此錯誤,並在View上使用此模型後與模型綁定。該操作無法完成,因爲DbContext已經使用MVC處理4
我的控制器代碼是
using System.Linq;
using System.Web.Mvc;
using JsonRenderingMvcApplication.Models;
namespace JsonRenderingMvcApplication.Controllers
{
public class PublisherController : Controller
{
public ActionResult Index()
{
PublisherModel model = new PublisherModel();
using (DAL.DevelopmentEntities context = new DAL.DevelopmentEntities())
{
model.PublisherList = context.Publishers.Select(x =>
new SelectListItem()
{
Text = x.Name,
Value = x.Id.ToString()
}); ;
}
return View(model);
}
}
}
我的視圖代碼是
@model JsonRenderingMvcApplication.Models.PublisherModel
@{
ViewBag.Title = "Index";
}
<div>
@Html.DisplayFor(model=>model.Id)
@Html.DropDownListFor(model => model.Id, Model.PublisherList);
</div>
<div id="booksDiv">
</div>
我的模型代碼
using System.Collections.Generic;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;
namespace JsonRenderingMvcApplication.Models
{
public class PublisherModel
{
public PublisherModel()
{
PublisherList = new List<SelectListItem>();
}
[Display(Name="Publisher")]
public int Id { get; set; }
public IEnumerable<SelectListItem> PublisherList { get; set; }
}
}
我實體的代碼是
namespace JsonRenderingMvcApplication.DAL
{
using System;
using System.Collections.Generic;
public partial class Publisher
{
public Publisher()
{
this.BOOKs = new HashSet<BOOK>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Year { get; set; }
public virtual ICollection<BOOK> BOOKs { get; set; }
}
}
是的,這個實體有一個導航屬性,但我不想要那個實體數據,所以我不想包含它。
謝謝
什麼行會拋出異常? – wdosanjos
@wdosanjos這行「@ Html.DropDownListFor(model => model.Id,Model.PublisherList);」拋出一個異常作爲職位的標題 –
雖然沒有直接與這個問題聯繫,但我有相同的錯誤有趣的發現。我有這個unitOfWork類(具有dbcontext對象)和類ABC。 ABC類通過unitOfWork類使用dbContext對象。 ABC類和unitOfWork類都通過windsor城堡DI容器得到實例化。我得到了非常相同的錯誤,問題是我在DI容器的初始化過程中註冊了ABC類。我寫過代碼,如Register(Component.For().ImplementedBy ()**。LifeStyle.Transient **)我錯過了粗體代碼以結束這個問題。 –
RBT