2011-02-10 26 views
1

これは本当に私にとって意味がありません。Asp.Net MVC3 Editor For例外

私はそれで、この分野でのビューモデルがあります:

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

初めて:このような私は、ビューでこのフィールドを表示

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

を(これは編集ビューです)クリーン/リビルドサイクルの後、それはうまく動作し、それはボックス内の日付だけを表示します(最近、私はボックスの日付と時刻を表示しないようにするために、一番いい方法)。私はページを更新した後

はしかし、私は次を得る:

値はnullにすることはできません。 パラメータ名:ストリーム

説明現在のWeb要求の実行中に、未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細:System.ArgumentNullException:値にnullを設定することはできません。 パラメータ名:ストリーム

このエラーは、別のクリーン/リビルドサイクルまで持続します。スタックトレースは、ビューエンジンが/ Shared/EditorTemplatesディレクトリからテンプレートをロードしようとしていることを示しているようです。ドキュメントにはデフォルトのテキストボックスが必要であることが示されているので、テンプレートはありません。これは私が望むものです。

私はストレートのTextBoxForを使用していません。フォーマットしていないので、EditorForがそうしています。この例外を満たすためにテンプレートを作成しようとすると、ビューの日付をどのように書式設定するかを判断しようとする問題に戻ります。

答えには2つのことが考えられます。このエラーは、最初のリフレッシュ後、またはRazorビュー内の日付の書式を設定した後でのみ発生します。要求ごと

、フルスタック:

[例外ArgumentNullException:値をNullにすることはできません。 パラメータ名:ストリーム] System.IO.StreamReader..ctor(ストリームストリーム、符号化符号、ブールdetectEncodingFromByteOrderMarks、のInt32あるbufferSize)9496369 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。 GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)+65 System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()+218 System.Web.Compilation.BuildProvidersCompiler.PerformBuild()+40 System.Web.Com pilation.BuildManager.CompileWebFile(VirtualPath virtualPath)8945798 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath、ブールnoBuild、ブールallowCrossApp、ブールallowBuildInPrecompile、ブールthrowIfNotFound、ブールensureIsUpToDate)320 System.Web.Compilation.BuildManager 。GetVPathBuildResultWithNoAssert(HttpContextコンテキスト、VirtualPath仮想パス、ブールnoBuild、ブールallowCuildApp、ブールallowBuildInPrecompile、ブールthrowIfNotFound、ブール保証のIsSpToDate)+111 System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath、HttpContext context、Boolean allowCrossApp、Boolean 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 writer)+58 System.Web.Mvc.Html.TemplateHelpers.ExecuteTemplate(HtmlHelper html、ViewDataD + 584 System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html、ModelMetadataメタデータ、文字列htmlFieldName、String templateName、DataBoundControlModeモード、Object 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(HtmlHelperの1 html, Expression 1発現、文字TEMPLATENAME、列htmlFieldName、DataBoundControlModeモード、additionalViewDataオブジェクト)+100 System.Web.Mvc.Html.EditorExtensions.EditorFor(HtmlHelperの1 html, Expression 1式)+57 ASP._Page_Views_Visit_visit_Edit_cshtml.Execute()でd:\ Code ... \ Views \ Visit \ Visit \ Edit.cshtml:34 System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+207 System.Web.Mvc.WebViewPage.ExecutePageHierarchy()+81 システム。 WebWebPages.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()8841105 System.Web.HttpApplication.ExecuteStep(IExecutionStepステップ、ブール& completedSynchronously)184

+1

スタックトレースとは何ですか? – SLaks

答えて

0

これはさらに少ない理にかなっています。詳細を提供しようとして、私はProcMonを起動し、ディスクにアクセスしようとしていたものが何であれ見つかった。存在しなかったテンプレートフォルダの下にある__MVCSITEMAPPROVIDERを読み込もうとしていました。

私はMvcSiteMapProviderライブラリの若干、erm、非標準バージョン(手動でMVC3にアップグレードしました)を使用していたことを知ったので、私はcodeplexの最新バージョンを入手することにしました。中にそれを落として、きれいに&を再構築し、それはリフレッシュ後も機能します。

この問題は解決しましたが、まだ清潔な&の再構築後に最初の負荷でのみ動作していた理由は分かりません。 procmonによると、最初の負荷ではまだ__MVCSITEMAPPROVIDERにアクセスしようとしていましたが、うまくいきました。