2010-12-17 3 views
0

비슷한 게시물을 찾을 수 있었지만 주어진 솔루션으로 성공하지 못했습니다. 그래서 나는 이것을 다시 게시했다.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

이 컨트롤러 작업의 일부 정보를 다시 데이터베이스에 게시하려고합니다. 뷰에서 저장 버튼을 클릭하면이 액션이 호출됩니다.

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult EditDetail(int id, FormCollection fvals) 
    { 
     Environments env = environmentsRepository.GetEnvironmentDetail(id); 
     UpdateModel(env); 
     environmentsRepository.Save(); 
     return RedirectToAction("List", new RouteValueDictionary(new 
     {controller="Environments", action="List", id = 1})); 
    } 

내가 저장 버튼을 클릭하면, 나는 다음과 같은 오류가 발생합니다 :

행 32 :
행 33 :
행 34 : < <퍼센트의 foreach는 (모델에서 VAR 환경) - - 에러이 줄
라인 35 : {%>
라인 36 :

0,123,516
[NullReferenceException: Object reference not set to an instance of an object.] 
    ASP.views_environments_list_aspx.__RenderContent2(HtmlTextWriter __w, Control  parameterContainer) in e:\code\ossp\WebUI\Views\Environments\List.aspx:34 

제가 누락 된 부분을 알려주십시오. 오류를 어떻게 해결합니까?

목록보기 : http://pastebin.ubuntu.com/544767/
목록 작업 : http://pastebin.ubuntu.com/544768/

해상도 :
내가 목록보기에 잘못된 매개 변수 대신 '페이지'의 'ID를'통과 것을 깨달았다.

모두에게 감사의 말씀을 전합니다. 나는이 토론으로 인해 많은 것을 배울 수있었습니다. 불행히도, 나는 아직 11 세에 투표권을 얻을 수 있습니다. 감사합니다.

+0

환경 컨트롤러의 목록 작업 코드를 게시하십시오. – Ahmad

+0

Ahmad, 게시물 작업에 대한 링크 및보기 코드를 게시했습니다. – Animesh

+1

아마도 TODO가 완료되어야합니다.'return View(); /// 할 일 처리 '. 이 경우 모델이 비어 있습니다. – Ahmad

답변

1

"페이지"아마드가 지적한대로 ELSE 따라 빈보기를 다시 반환하는 것처럼

if (page.HasValue) 
    return View(environmentsRepository.Environments.Skip(((int)page - 1) * PageSize).Take(PageSize).ToList()); 
else 
    return View(); ///TODO Handle This 

당신이 코드 흐름을 확인하려면 다음을 통해 디버깅 시도 되세요 보이는, 그래서 값이없는 걸릴까요?

+0

"페이지"가 ​​실제로 null 값을 반환한다는 것을 발견했습니다. 나는 ListController가 페이지 링크를 탐색 할 때 내용을 표시 할 수있는 이유를 이해할 수 없지만 EditDetail의 redirectToAction에서 호출 될 때 페이지가 null로 반환됩니다. 왜 그런가? – Animesh

+0

나는 'page'대신 잘못된 매개 변수 'id'를 List 뷰에 전달한다는 것을 깨달았습니다. 나는 이것을 바꿨고 효과가 있었다. – Animesh

+0

이것이 당신의 질문에 대답했다고 생각하면 upvote 바랍니다 :) – ozz

2

마지막으로 EditDetail 안에 Environments 컨트롤러의 List 동작으로 리디렉션되고이 동작이 강력한 형식의 뷰를 렌더링한다고 가정합니다. 문제는 뷰에 전달한 모델이 null이라는 것입니다.

public ActionResult List(int id) 
{ 
    var model = FetchModelFromSomewhere(id); // this probably returns null here 
    return View(model); 
} 

을 그리고 당신의 내부보기 당신은 널 모델을 통해 열거하려고 : 그래서 당신의 컨트롤러 액션은 다음과 같이 보일 수

<% foreach (var environment in Model) { %> 

을 당신은 예외를 얻고있다. 따라서 List보기로 전달할 모델이 null이 아닌지 확인하십시오.

관련 문제