【发布时间】:2023-03-30 22:20:02
【问题描述】:
提前感谢您的帮助。
MVC 新手,所以可能很容易回答。我收到了这个错误,不知道它是什么意思。这是我的代码:
我的看法:
@model carBayWebsite.Models.WishList
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm("Create",
"WishLists",
FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Add to WishList?</h4>
<hr />
<p>Are you sure you want to add this to your Wish List?</p>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
@Html.HiddenFor(m => m.AdvertId)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
@Html.HiddenFor(m => m.AdvertId)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Add" class="btn btn-default"/>
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
我的控制器
public class WishListsController : Controller
{
private Entities2 db = new Entities2();
public ActionResult Index()
{
string userName = User.Identity.GetUserName();
var wishlist = from ads in db.Adverts
join wish in db.WishLists
on ads.AdvertId equals wish.AdvertId
where wish.UserId.Contains(userName)
select wish;
return View(wishlist.ToList());
}
// GET: WishLists/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
WishList wishList = db.WishLists.Find(id);
if (wishList == null)
{
return HttpNotFound();
}
return View(wishList);
}
public ActionResult Create(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
else
{
string usID = User.Identity.GetUserId().ToString();
int adID = Convert.ToInt32(id);
WishList wishList = db.WishLists.Find(id);
ViewBag.userId = usID;
ViewBag.advertId = adID;
return View(wishList);
}
}
// POST: WishLists/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(WishList wishList)
{
if (ModelState.IsValid)
{
db.WishLists.Add(new WishList
{
UserId = ViewBag.userId,
AdvertId = Convert.ToInt32(ViewBag.advertID),
});
try {
db.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}",
validationError.PropertyName,
validationError.ErrorMessage);
}
}
}
return RedirectToAction("Index");
}
return View(wishList);
}
谁能弄清楚出了什么问题?环顾四周,我觉得它非常简单,就像第一个 View 一样,但我无法确定它! :)
错误详情
传入字典的模型项的类型为“System.Collections.Generic.List1[carBayWebsite.Models.Advert]”,但该字典需要类型为“System.Collections.Generic.IEnumerable1[carBayWebsite. Models.WishList]'
【问题讨论】:
-
我提交了视图
-
错误信息中
List<T1>和IEnumerable<T2>的泛型类型参数是什么?T1和T2是同一类型吗? -
@zgoog 不,它说当我放入时,wishList 不包含 ToList 的定义
-
@CodeNotFound 当我单击视图中的提交输入按钮时。
-
@erdinger 完整的错误消息说:传递到字典中的模型项的类型为“System.Collections.Generic.List
1[carBayWebsite.Models.Advert]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[carBayWebsite.Models.WishList]”。
标签: c# asp.net-mvc entity-framework