2011-02-10 4 views
1

이것은 실제로 전혀 이해가되지 않습니다.Asp.Net MVC3 EditorFor 예외

나는 그것을이 필드 뷰 모델을 가지고 :

@Html.EditorFor(m=>m.Scheduled) 

처음 :

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")] 
[DataType(DataType.Date)] 
public DateTime Scheduled { get; set; } 

나는 다음과 같이보기에이 필드를 (이 편집이다)를 표시 깨끗한/다시 빌드 사이클 후, 그것은 잘 작동합니다, 그냥 상자에 날짜를 표시합니다 (나는 최근에 많은 시간을 상자에 날짜와 시간을 표시하지 않도록하는 좋은 방법을 찾아 냈다. 가장 좋은 방법).

값은 null 일 수 없습니다 : 내가 페이지를 새로 고침하면

그러나, 나는 다음과 같은 얻을. 매개 변수 이름 : 스트림

설명 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.ArgumentNullException : 값은 null 일 수 없습니다. 매개 변수 이름 : 스트림

이 오류는 다시 정리/다시 작성 될 때까지 유지됩니다. 스택 추적은 뷰 엔진이/Shared/EditorTemplates 디렉터리에서 템플릿을로드하려고 시도하고 있음을 나타냅니다. 문서에는 기본적으로 텍스트 상자가 있어야한다는 메시지가 표시되어 있으므로 원하는 템플릿이 없으므로이 템플릿이 없습니다.

형식화를 수행하지 않기 때문에 곧바로 TextBoxFor를 사용하지 않습니다. EditorFor는 그렇게합니다. 그리고이 예외를 만족시키기 위해 템플릿을 만들려고 할 때, 뷰의 날짜 형식을 지정하는 방법을 찾는 문제로 돌아 왔습니다.

그래서이 오류는 처음 새로 고침을 한 후에 만, 또는 면도기 뷰 내부에서 날짜 서식을 지정하는 경우에만 발생합니다. 요청에 따라

, 전체 스택 :

[경우 ArgumentNullException : 값 null 일 수 없습니다. 파라미터 명칭 : 스트림] System.IO.StreamReader..ctor (스트림 스트림 인코딩 인코딩 부울 detectEncodingFromByteOrderMarks, INT32 버퍼 크기) 9,496,369 System.Web.UI.TemplateParser.ParseFile (문자열 PhysicalPath 인자, VirtualPath virtualPath) 232 System.Web.UI.TemplateParser.ParseInternal() +86 System.Web.UI.TemplateParser.Parse() +160 System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType() +110 System.Web.Compilation.BuildProvider. (빌드 공급자) BuildProvider (빌드 공급자) pilation.BuildManager.CompileWebFile (VirtualPath의 virtualPath) 8,945,798 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal (VirtualPath virtualPath 부울 noBuild 부울 allowCrossApp 부울 allowBuildInPrecompile 부울 throwIfNotFound 부울 ensureIsUpToDate) 320 System.Web.Compilation.BuildManager .GetVPathBuildResultWithNoAssert (HttpContext를 컨텍스트 VirtualPath virtualPath 부울 noBuild 부울 allowCrossApp 부울 allowBuildInPrecompile 부울 throwIfNotFound 부울 ensureIsUpToDate) +111 System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory (VirtualPath virtualPath, 문맥으로 HttpContext 부울 allowCrossApp 부울 throwIfNotFound) +125 System.Web.Compilation.BuildManager.GetCompiledType (VirtualPath virtualPath) +10 System.Web.Compilation.BuildManager.GetCompiledType (String virtualPath) +28 System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.GetCompiledType (String virtualPath) +7 System.Web.Mvc.BuildManagerCompiledView.Render (ViewContext viewContext, TextWriter 작성기) +58 System.Web.Mvc.Html.TemplateHelpers.ExecuteTemplate (HtmlHelper html, ViewDataD ictionary을 ViewData, 문자열 TEMPLATENAME, DataBoundControlMode 모드, GetViewNamesDelegate getViewNames, GetDefaultActionsDelegate getDefaultActions) 584 System.Web.Mvc.Html.TemplateHelpers.TemplateHelper (Html ​​헬퍼 HTML, ModelMetadata 메타 데이터, 문자열 htmlFieldName, 문자열 TEMPLATENAME, DataBoundControlMode 모드, additionalViewData 객체, ExecuteTemplateDelegate executeTemplate) +1027 System.Web.Mvc.Html.TemplateHelpers.TemplateHelper (HtmlHelper html, ModelMetadata 메타 데이터, String htmlFieldName, String templateName, DataBoundControlMode 모드, Object additionalViewData) +66 System.Web.Mvc.Html.TemplateHelpers.TemplateFor (HtmlHelper 1 html, Expression 식 1, 문자열 templateName, 문자열 htmlFieldName, DataBoundControlMode 모드, 개체 additionalViewData, TemplateHelperDelegate templateHelper) +118 System.Web.Mvc.Html.TemplateHelpers.Templ ateFor (Html ​​헬퍼 1 html, Expression 1 식, 문자열 TEMPLATENAME, 문자열 htmlFieldName, DataBoundControlMode 모드, additionalViewData 객체) (+100 System.Web.Mvc.Html.EditorExtensions.EditorFor (Html ​​헬퍼 1 html, Expression 1 식) +57 ASP._Page_Views_Visit_visit_Edit_cshtml.Execute를)에서 d : \ 코드 ... \ Views \ Visit \ Visit \ Edit.cshtml : 34 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207 System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +81 시스템. WebWebPage.WebPageBase.ExecutePageHierarchy (WebPageContext pageContext, TextWriter 작성자, WebPageRenderingBase startPage) +76 System.Web.Mvc.RazorView.RenderView (ViewContext viewContext, TextWriter 작성기, 개체 인스턴스) +220 System.Web.Mvc.BuildManagerCompiledView. 렌더링 (V iewContext viewContext, TextWriter에서 작가) 115 System.Web.Mvc.ViewResultBase.ExecuteResult (ControllerContext 컨텍스트) 303 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult (ControllerContext controllerContext, ActionResult actionResult) +13 System.Web.Mvc. <> C_ DisplayClass1c.b _19() +23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter (IResultFilter 필터 ResultExecutingContext preContext, Func을 1 continuation) +260 System.Web.Mvc.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1 개 필터 ActionResult actionResult) +177 System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext, String actionName) +343 System.Web.Mvc.Controller.ExecuteCore() +116 System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System. Web.Mvc.IController.Execute (RequestContext requestContext) +10 System.Web.Mvc. <> c_ DisplayClassb.b _5() +37 System.Web.Mvc.Async. <> c_ DisplayClass1.b _0() +21 System.Web.Mvc.Async. <> c_ DisplayClass8 1.<BeginSynchronous>b__7(IAsyncResult _) +12 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +62 System.Web.Mvc. <> c _DisplayClasse.b_ d() +50 System.Web.Mvc.SecurityUtil.b _0 (동작 f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust (조 작용) +22 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult를 asyncResult) +60 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (IAsyncResult를 결과) +9 시스템. Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 8,841,105 (IExecutionStep 단계, 부울 & completedSynchronously)는 184

+1

스택 추적이란 무엇입니까? – SLaks

답변

0

이 더 적은 의미가 있습니다. 자세한 내용을 제공하기 위해 ProcMon을 실행하고 디스크에 액세스하려고 시도한 내용이 무엇인지 살펴보기 시작했습니다. 존재하지 않는 템플릿 폴더 아래에서 __MVCSITEMAPPROVIDER를 읽으려고하는 것으로 나타났습니다.

MvcSiteMapProvider 라이브러리의 약간 erm, 비표준 버전 (수동으로 MVC3으로 업그레이드)을 사용 중이라는 것을 알고, 최신 버전을 codeplex에서 가져 오기로 결정했습니다. 안으로 그것을 떨어 뜨리고, 새롭게 한 & 재건하고, 새롭게 한 후에조차 작동한다.

문제가 해결되었지만 아직 &을 다시 작성한 후에 첫 번째로드에서만 작동하는 이유는 알 수 없습니다. procmon에 따르면, 첫 번째로드에서 여전히 __MVCSITEMAPPROVIDER에 액세스하려고 시도했지만 작동했습니다.