gpt4 book ai didi

asp.net-mvc - 为什么我的 ASP.NET MVC 2 应用程序中的 EditorFor 抛出 ArgumentNullException?

转载 作者:行者123 更新时间:2023-12-04 14:23:01 26 4
gpt4 key购买 nike

在我的一个观点中,EditorFor 有一个奇怪的问题。以下代码引发 ArgumentNullException。

<%: Html.EditorFor(x => x.Name) %>

但是,下面的代码很好。
<%: Html.TextBoxFor(x => x.Name) %>

Model.Name 是一个字符串变量 - 它已设置。

EditorFor 在另一个 View 中工作 - 直到此 View 崩溃,此时我必须重新启动开发 Web 服务器 (Cassini) 或所有 EditorFor 调用崩溃并显示相同的消息。

我用 MVC 2 源代码运行了一个测试,希望我能得到一些见解,但效果很好!据推测,那里的 MVC 2 RTM 源应该是 VS2010 中的源(日期似乎相关)。

我刚刚切换到 TextBoxFor,因为这很好 - 但我想知道问题是什么。我在 .NET 4、VS2010 和 Win7 x64 下运行。

[ 更新 :DisplayFor 也会出现同样的问题。]

部分堆栈跟踪是:
[ArgumentNullException: Value cannot be null.
Parameter name: stream]
System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) +9496369
System.Web.UI.TemplateParser.ParseFile(String 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.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +8945798
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +320
System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +111
System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) +125
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) +52
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(String virtualPath, Type requiredBaseType) +28
System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.CreateInstanceFromVirtualPath(String virtualPath, Type requiredBaseType) +36
System.Web.Mvc.WebFormView.Render(ViewContext viewContext, TextWriter writer) +172
System.Web.Mvc.Html.TemplateHelpers.ExecuteTemplate(HtmlHelper html, ViewDataDictionary viewData, String templateName, DataBoundControlMode mode, GetViewNamesDelegate getViewNames) +1154
System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html, ModelMetadata metadata, String htmlFieldName, String templateName, DataBoundControlMode mode, Object additionalViewData, ExecuteTemplateDelegate executeTemplate) +1626
System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html, ModelMetadata metadata, String htmlFieldName, String templateName, DataBoundControlMode mode, Object additionalViewData) +86
System.Web.Mvc.Html.TemplateHelpers.TemplateFor(HtmlHelper`1 html, Expression`1 expression, String templateName, String htmlFieldName, DataBoundControlMode mode, Object additionalViewData, TemplateHelperDelegate templateHelper) +210
System.Web.Mvc.Html.TemplateHelpers.TemplateFor(HtmlHelper`1 html, Expression`1 expression, String templateName, String htmlFieldName, DataBoundControlMode mode, Object additionalViewData) +129
System.Web.Mvc.Html.EditorExtensions.EditorFor(HtmlHelper`1 html, Expression`1 expression) +87

最佳答案

您传递的属性的编辑器模板是什么样的? (我假设 x.Name 是一个字符串,因此您应该在 Views/Shared/EditorTemplates 中有一个名为 String.ascx 的模板)。

为字符串加载的编辑器模板可能不喜欢传递的空字符串。

如果您没有用于字符串的自定义编辑器模板(并且您只需要一个基本的文本框),则没有理由使用 EditorFor。

关于asp.net-mvc - 为什么我的 ASP.NET MVC 2 应用程序中的 EditorFor 抛出 ArgumentNullException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19735246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com