2011-11-07 3 views
1

이 문제를 해결하는 방법에 대한 아이디어와 이상한 예외가 있습니다. 나는 아주 명백한 것을 간과 할 것이라고 확신한다. 나는 다음과 같은 견해를 가지고 있었지만 무언가를했고, 갑자기 왜 멈추었는지 알 수 없었다.MVC3 @ Html.EditorForModel NullReferenceException

// All in an Area 

// Controller 
public ViewResult Test() 
{ 
    return View(); 
} 

[HttpPost] 
public ViewResult Test(TestModel testModel) 
{ 
    // Do some work 
    // Redirect or 
    return View(testModel); 
} 

// Model 
public class TestModel 
{ 
    [Required] 
    public string Name { get; set; } 
} 

// View 
@model MyApp.Areas.Admin.Models.TestModel 

@{ 
    ViewBag.Title = "Create New User"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

@section HeadSection { 
    <link href="@Url.Content("~/Content/MvcMembership.css")" rel="stylesheet" type="text/css" /> 
} 

<h2 class="someclass">Test Form</h2> 

<div class="otherclass"> 
    @using (Html.BeginForm("Test", "MyController")) 
    { 
    @Html.EditorForModel() 
     <input type="submit" value="Create" /> 
     @Html.ValidationSummary(true) 
} 
</div> 

나는 내 실제 코드 나 테스트 컨트롤러/뷰에 HttpGet에 @ Html.EditorForModel()에서 다음과 같은 예외가 발생합니다.

System.NullReferenceException was unhandled by user code 
    Message=Object reference not set to an instance of an object. 
    Source=App_Web_field.master.5f132152.av8tutrk 
    StackTrace: 
     at ASP.views_inputbuilders_editortemplates_field_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in http://server/Views/InputBuilders/EditorTemplates/Field.Master:line 5 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.UI.Control.Render(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) 
     at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 
     at System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) 
     at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) 
     at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 
     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    InnerException: 

모든 의견은 대단합니다! - 제프

[편집] 거의 총알 :

  • 나는 테스트 코드와 작업 솔루션/프로젝트가 있습니다. 가장 큰 차이점은 프로젝트 크기입니다. 이것은 많은 영역, 컨트롤러, 모델 및 뷰가있는 큰 프로젝트입니다. 따라서 라우팅, 참조 등은 다릅니다. 나는 밟아서 확인한 Model이 null이고 어떤 작은 독서에서도 찾을 수있는 EditorFor [Model]은 반사를 사용하여 필드를 작성하므로 다른 것입니다. http://mvcmembership.codeplex.com/
+0

a : null이 아닌 'TestModel'을 모델로 전달 했습니까? b : 어떤 편집기를 사용하고 있습니까? 기본 설정? 관습 하나? 뭐? –

+0

null이 아니고 null입니다. TestModel이 모델입니다. VS2010을 사용하고 있습니다. 위의 내 질문에 편집하십시오. –

답변

2

나는 MvcContrib.Mvc3-ci (v3.0.90.0) Nuget Package를 사용하여 휴대용 영역을 제거했지만 Application_Start()의 Global.asax.cs 파일에서 사용법을 제거하지는 못했습니다. 간단히 말해서 나는 MvcContrib을 모두 제거했으며 정상적으로 작동합니다. 패키지와 Global.asax.cs 사용을 추가하면 문제가 반환됩니다. 잠시 시간을내어 문제를 이해하고, 세부 정보가 담긴 블로그를 작성하고, 필요한 경우 문제를 제출합니다. 설치 MvcContrib.Mvc3-CI (v3.0.90.0)와

는 Global.asac.cs 파일이 포함 : Maess, 대린 미갈에

using MvcContrib.PortableAreas; // REMOVED THIS! 

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    RegisterGlobalFilters(GlobalFilters.Filters); 

    PortableAreaRegistration.RegisterEmbeddedViewEngine(); // REMOVED THIS! 
    RegisterRoutes(RouteTable.Routes); 
} 

감사를 도와. 답변을 정확하다고 표시 할 수는 없지만 최소한이 감사를 표시 할 수는 있습니다.

0

당신은 EditorForModel를 사용하고 당신이 그것을에 null 참조를 전달 :

  • 나는 솔루션을 찾고 온라인 동안 작업 예제를 발견했다. 예 : 컨트롤러의 뷰에 대한 새로운 TestModel 객체.

  • +0

    내 의견을 Darin에게 보냅니다. –

    +0

    감사합니다. Michal, 나는 질문의 맨 아래에 강조 표시된 해결책을 찾았습니다. 나는 프로젝트와 관련이 있다고 확신 했으므로 공정한 질문이 아닐 수도있다. 최고 - Jeff –

    0
    public ViewResult Test() 
    { 
        return View(new TestModel()); 
    } 
    
    +0

    그래도 문제가 해결되지 않습니다. 나도 그걸 밟아 왔고 나는 무엇이 널인지 전혀 모른다. 새로운 솔루션과 정확히 같은 코드로 작동하는 새로운 프로젝트가 있습니다. 나는 또한 해결책을 찾는데있어 비슷한 코드를 발견했다. 수정 사항을 참조하십시오. –

    +0

    감사합니다. Darin, 나는 질문의 맨 아래에 강조 표시된 해결책을 찾았습니다. 나는 프로젝트와 관련이 있다고 확신 했으므로 공정한 질문이 아닐 수도있다.최고 - Jeff –

    0

    새 TestModel에 보내는 경우 그냥 생각 만은, 내가 이름 속성이 null 내기, Name 속성을 유지하기 위해 항상 최소한 String.Empty로 설정되어 멤버를 사용하여 시도 문제가 해결되는지 확인하십시오.

    +0

    감사합니다. Maess, 질문의 맨 끝에 강조 표시된 해결책을 찾았습니다. 나는 프로젝트와 관련이 있다고 확신 했으므로 공정한 질문이 아닐 수도있다. 최고 - Jeff –

    관련 문제