Asp.net mvc 2问题,保存已编辑的表单值

时间:2012-07-29 14:22:11

标签: c# asp.net-mvc-2 object edit

我遇到了编辑表中列的问题,即使我可以很容易地添加和删除它们。我之前做过这样的事情并没有遇到任何问题,所以我很难理解为什么现在这样。

我可以点击玩家名称并获取他的详细信息,但是当我在视图中编辑玩家详细信息并单击“保存”时,它说“序列”不包含任何元素。

有人可以帮助我纠正这个问题,因为它让我发疯,因为它很可能是一个简单的解决方案,所以会非常感激。

这是我的代码:

存储库:

public Players PlayersDetails(String Name)
{
    var players = (from p in _entities.Players      
                where p.FullName == Name
                select p).First();
    return players;
}

public void playersEdit(Players playersToEdit)
{
    var originalPlayer = PlayersDetails(playersToEdit.FullName);
    _entities.ApplyPropertyChanges(originalPlayer.EntityKey.EntitySetName, playersToEdit);
    _entities.SaveChanges();
}

IRepository:

public interface IHuddRLRepository
{
    //Player List
    IEnumerable<Players> PlayersList();
    Players PlayersDetails(String Name);
    void playersCreate(Players playersToCreate);
    void playersEdit(Players playersToEdit);
    void playersDelete(Players playersToDelete);
}

控制器:

public ActionResult Edit(String FullName)
{
    Players players = _entities.PlayerDetails(FullName);
    return View(players);
}

[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Players playersToEdit)
{
    if (!ModelState.IsValid)
    {
        return View();
    }
    else
    {
        _entities.playersEdit(playersToEdit);
        return RedirectToAction("Index", "Players");
    }
}

1 个答案:

答案 0 :(得分:0)

序列不包含任何元素意味着查询在您期望的时候没有返回结果(使用First()而不是FirstOrDefault(),当没有找到元素时返回null)。我猜测,因为你尝试使用编辑过的玩家数据进行查找,所以你必须更改玩家的名字,这个名字在数据库中还不存在。

您应该做的是使用ID进行播放器查找,因为它不可编辑,并且会引用您尝试编辑的数据。