이 문제를 해결하는 방법에 대한 아이디어와 이상한 예외가 있습니다. 나는 아주 명백한 것을 간과 할 것이라고 확신한다. 나는 다음과 같은 견해를 가지고 있었지만 무언가를했고, 갑자기 왜 멈추었는지 알 수 없었다.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/
a : null이 아닌 'TestModel'을 모델로 전달 했습니까? b : 어떤 편집기를 사용하고 있습니까? 기본 설정? 관습 하나? 뭐? –
null이 아니고 null입니다. TestModel이 모델입니다. VS2010을 사용하고 있습니다. 위의 내 질문에 편집하십시오. –