我有一个控制器,用户可以使用该控制器添加朋友。控制器中的ActionMethods是:
[Authorize]
public ActionResult Add (string id = "")
{
var model = _db.Users
.OrderBy(r => r.UserName)
.Where(r => r.Id == id).ToList()
.Select(r => new FriendsList
{
RequesterID = HttpContext.User.Identity.GetUserId().ToString(),
RequesteeID = id,
UserName = r.UserName,
Status = "NewRequest",
RequestDate = DateTime.Now,
AcknowledgeDate = DateTime.Now
});
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Add (FriendsList friendslist)
{
if (ModelState.IsValid)
{
_friend.Entry(friendslist).State = System.Data.Entity.EntityState.Modified;
_friend.SaveChanges();
return View(friendslist);
}
}
视图代码如下:
@model Max.Models.Social.FriendsList
<h2>Add</h2>
<div>
@Model.id = @Model.id;
@Model.RequesteeID = @Model.RequesteeID;
@Model.Status = @Model.Status;
@Model.UserName = @Model.UserName;
@Model.RequesterID = @Model.RequesterID;
<p>Add @Model.UserName ?<input type="submit" value="Add" /></p>
</div>
我不确定如何获取从控制器传递的数据以回发到Add ...但这是我最好的猜测。
完成所有操作后,这是我从服务器返回的错误:
传递到字典中的模型项是类型的 &#39; System.Linq.Enumerable + WhereSelectListIterator`2 [Max.Models.ApplicationUser,Max.Models.Social.FriendsList]&#39 ;, 但是这个字典需要一个类型的模型项 &#39; Max.Models.Social.FriendsList&#39;
为什么我会收到错误?
答案 0 :(得分:1)
您的添加操作方法从数据库中选择一个用户model
,但该类型为System.Linq.Enumerable+WhereSelectListIterator'2[Max.Models.ApplicationUser,Max.Models.Social.FriendsList]
,而您的视图接受Max.Models.Social.FriendsList
。
所以你需要选择一条记录。您可以使用FirstOrDefault()
:
[Authorize]
public ActionResult Add (string id = "")
{
var model = _db.Users
.OrderBy(r => r.UserName)
.Where(r => r.Id == id).ToList()
.Select(r => new FriendsList
{
RequesterID = HttpContext.User.Identity.GetUserId().ToString(),
RequesteeID = id,
UserName = r.UserName,
Status = "NewRequest",
RequestDate = DateTime.Now,
AcknowledgeDate = DateTime.Now
})
.FirstOrDefault();
if (model == null)
{
// handle not found
}
return View(model);
}