0

大家好,我有以下代码:

public ActionResult Create(GameTBL gametbl)
        {
            if (ModelState.IsValid)
            {
                //First you get the gamer, from GamerTBLs
                var gamer = db.GamerTBLs.Where(k => k.UserName == User.Identity.Name).SingleOrDefault();
                //Then you add the game to the games collection from gamers
                gamer.GameTBLs.Add(gametbl);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
        }

它给了我以下错误:

Error   1   'MvcApplication1.Controllers.GameController.Create(MvcApplication1.Models.GameTBL)': not all code paths return a value

这段代码试图做的是试图将玩家的外键填充到游戏表中

我的控制器游戏玩家的型号:

    public string UserName { get; set; }
    public int GamerID { get; set; }
    public string Fname { get; set; }
    public string Lname { get; set; }
    public string DOB { get; set; }
    public string BIO { get; set; } 

我的游戏控制器的模型:

    public int GameID { get; set; }
    public string GameName { get; set; }
    public string ReleaseYear { get; set; }
    public string Cost { get; set; }
    public string Discription { get; set; }
    public string DownloadableContent { get; set; }
    public string Image { get; set; }
    public string ConsoleName { get; set; }
    public int GamerIDFK { get; set; }
    public byte[] UserName { get; set; }
4

3 回答 3

3

当您的 ModelState 无效时,您只需要返回一个视图。

public ActionResult Create(GameTBL gametbl)
    {
        if (ModelState.IsValid)
        {
            //First you get the gamer, from GamerTBLs
            var gamer = db.GamerTBLs.Where(k => k.UserName == User.Identity.Name).SingleOrDefault();
            //Then you add the game to the games collection from gamers
            gamer.GameTBLs.Add(gametbl);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(gametbl);
    }

这将使页面显示模型创建中的任何错误(假设您有验证)。

于 2012-03-26T22:08:03.647 回答
0

试试这个...返回语句应该在 if 语句之外...问题是当模型状态无效时您没有返回视图/操作结果...

public ActionResult Create(GameTBL gametbl)
    {
        if (ModelState.IsValid)
        {
            //First you get the gamer, from GamerTBLs
            var gamer = db.GamerTBLs.Where(k => k.UserName == User.Identity.Name).SingleOrDefault();
            //Then you add the game to the games collection from gamers
            gamer.GameTBLs.Add(gametbl);
            db.SaveChanges(); 
            return RedirectToAction("Index");               
        }
        return View(gametbl);
    }
于 2012-03-26T22:02:01.160 回答
0

如您所知,该错误与 ASP.Net MVC 并不真正相关 - 在任何返回值的方法中都会出现错误。

错误消息的not all code paths return a value意思是——当方法签名说它应该返回值时,有一条通过代码的路径不返回值。

在您的情况下,您的操作方法具有签名ActionResult Create(GameTBL gametbl),因此通过该方法的所有路径都必须返回一个ActionResult. 在您的代码中,当ModelState.IsValid 为真时发生的路径确实返回ActionResult- 但在ModelState.IsValid为假的路径中不返回任何内容。

其他答案为您提供了有关如何通过“ModelState.IsValid为假”路径返回 ActionResult 来更正代码的示例。

于 2012-03-26T22:53:27.810 回答