gpt4 book ai didi

c# - 通过辅助方法动态调用 Html.ValidationSummary() 时出现 KeyNotFound 异常

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:55 24 4
gpt4 key购买 nike

我的 View 中有一个帮助程序方法,它动态地呈现整个表单。现在我想添加对 Asp.Net MVC RC 2 中可用的客户端验证的支持。

以下是我用来将验证摘要字段呈现到表单上的代码。

_viewPage.Html.EnableClientValidation();
MvcHtmlString validationSummary = _viewPage.Html.ValidationSummary("There are errors on this form. Please contact your administrator.");
if (validationSummary != null && validationSummary.ToString() != "")
Response.Write(validationSummary.ToString());

当代码到达这一点时,出现以下错误。

System.Collections.Generic.KeyNotFoundException was unhandled by user code

Message="字典中不存在给定的键。" 源=“系统” 堆栈跟踪: 在 System.ThrowHelper.ThrowKeyNotFoundException() 在 System.Collections.Generic.SortedDictionary2.get_Item(TKey 键)
在 System.Web.Mvc.Html.ValidationExtensions.ValidationSummary(HtmlHelper htmlHelper, bool 值 excludePropertyErrors,字符串消息,IDictionary
2 htmlAttributes) 在 System.Web.Mvc.Html.ValidationExtensions.ValidationSummary(HtmlHelper htmlHelper,字符串消息,IDictionary`2 htmlAttributes) 在 Fusion.UI.MvcWebUX.Helper.FormGenerator.GenerateFormValidation() 在 D:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Helper\FormGenerator.cs:line 88 在 Fusion.UI.MvcWebUX.Helper.FormGenerator.GenerateForm() 在 D:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Helper\FormGenerator.cs:line 70 在 Fusion.UI.MvcWebUX.Helper.FormGenerator.RenderForm(ViewPage viewPage) 在 D:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Helper\FormGenerator.cs:line 60 在 ASP.views_shared_autoview_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer) 在 d:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Views\Shared\AutoView.aspx:line 7 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 编写器,ICollection 子级) 在 System.Web.UI.Control.RenderChildren(HtmlTextWriter 编写器) 在 System.Web.UI.Control.Render(HtmlTextWriter 编写器) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器,ControlAdapter 适配器) 在 System.Web.UI.Control.RenderControl(HtmlTextWriter 编写器,ControlAdapter 适配器) 在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作者) 在 ASP.views_shared_fusion_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) 在 d:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Views\Shared\Fusion.Master:line 74 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 编写器,ICollection 子级) 在 System.Web.UI.Control.RenderChildren(HtmlTextWriter 编写器) 在 System.Web.UI.Control.Render(HtmlTextWriter 编写器) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器,ControlAdapter 适配器) 在 System.Web.UI.Control.RenderControl(HtmlTextWriter 编写器,ControlAdapter 适配器) 在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作者) 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 编写器,ICollection 子级) 在 System.Web.UI.Control.RenderChildren(HtmlTextWriter 编写器) 在 System.Web.UI.Page.Render(HtmlTextWriter 编写器) 在 System.Web.Mvc.ViewPage.Render(HtmlTextWriter 编写器) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器,ControlAdapter 适配器) 在 System.Web.UI.Control.RenderControl(HtmlTextWriter 编写器,ControlAdapter 适配器) 在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作者) 在 System.Web.UI.Page.ProcessRequestMain( bool 值 includeStagesBeforeAsyncPoint, bool 值 includeStagesAfterAsyncPoint) 内部异常:

我为此苦苦挣扎了几个小时。谁能帮我解决这个问题并告诉我为什么会这样。

最佳答案

我已经来这里两次寻求解决方案,所以我也会回答另一个可能导致此问题的问题。

在 MVC2 RC(我相信;2010 RC 交付的版本)中,您可以在调用 EnableClientValidation 时导致此异常:

<%-- This is the proper way to call these two methods --%>
<% Html.ValidationSummary(); %>
<% Html.EnableClientValidation(); %>

这种方式会引发异常:

<%-- Side effects of calling ECV first will result in the exception --%>
<% Html.EnableClientValidation(); %>
<% Html.ValidationSummary(); %>

像这样从几个断开连接的方法调用中突然出现副作用真是太糟糕了。有点让我想起了全局变量。

关于c# - 通过辅助方法动态调用 Html.ValidationSummary() 时出现 KeyNotFound 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182830/

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