MVC 4控制器中的空id值

时间:2014-02-17 22:06:12

标签: c# asp.net-mvc controller nullable redirecttoaction

我正在开发一个MVC 4互联网应用程序,在创建对象后遇到了麻烦。

以下是发生错误的代码:

[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(int id, Comment comment)
{
    if (ModelState.IsValid)
    {
        Book book = db.books.Where(b => b.id == id).First();
        comment.username = us.GetCurrentlyLoggedInUserName();
        book.comments.Add(comment);
        db.SaveChanges();
        return RedirectToAction("Index", id);
    }

    return View(comment);
}

这是Index ActionResult:

public ActionResult Index(int id)
{
    var commentsBookViewModel = new CommentsViewModel();
    commentsBookViewModel.bookId = id;
    commentsBookViewModel.isUserLoggedIn = us.IsUserLoggedIn();
    commentsBookViewModel.loggedInUserName = us.GetCurrentlyLoggedInUserName();
    commentsBookViewModel.comments = db.books.Where(b => b.id == id).FirstOrDefault().comments.ToList();
    return View(commentsBookViewModel);
}

这是错误:

  

参数字典包含参数'id'的空条目   方法的非可空类型'System.Int32'   'System.Web.Mvc.ActionResult Index(Int32)'中   'BookApplication.Controllers.CommentController'。可选参数   必须是引用类型,可空类型,或声明为   可选参数。参数名称:参数

如果我在该行放置一个断点:

return RedirectToAction("Index", id);

变量id有一个值,并且不为空,但错误仍然存​​在。

我可以请一点帮忙吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

我会尝试用这样的东西传递它。

返回RedirectToAction(“Index”,new {id = id});