2014-02-17 8 views
0

MVC 4 인터넷 응용 프로그램을 개발 중이며 객체를 생성 한 후 문제가 있습니다. 내가 배치하면MVC 4 컨트롤러에서 null id 값

The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Index(Int32)' in 'BookApplication.Controllers.CommentController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters

: 여기

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); 
} 

오류입니다 :

여기
[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); 
} 

는 인덱스 ActionResult입니다 : 여기

는 오류가 일어나고 코드입니다 줄 바꿈 점 :

return RedirectToAction("Index", id); 

변수 id은 값을 가지며 null이 아니지만 여전히 오류가 발생합니다.

이 문제에 대해 도움을받을 수 있습니까?

미리 감사드립니다.

답변

0

나는 이런 식으로 전달하려고합니다.

return RedirectToAction ("Index", new {id = id});

+2

'new {id = id}'는 컴파일러가 전달 된 변수의 프로퍼티 이름을 추론 할 때'new {id} '로 줄일 수 있습니다. 많은 사람들이 혼란을 피하기 위해 명시 적으로 속성 이름을 지정하기 때문에 실제로는 코딩 스타일입니다. –