【发布时间】:2010-02-02 08:59:58
【问题描述】:
我的视图中有一个辅助方法,它可以动态呈现整个表单。现在我想添加对 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 key)
at System.Web.Mvc.Html.ValidationExtensions.ValidationSummary(HtmlHelper htmlHelper, Boolean excludePropertyErrors, String message, IDictionary2 htmlAttributes)
在 System.Web.Mvc.Html.ValidationExtensions.ValidationSummary(HtmlHelper htmlHelper,字符串消息,IDictionary`2 htmlAttributes)
在 D:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Helper\FormGenerator.cs:line 88 中的 Fusion.UI.MvcWebUX.Helper.FormGenerator.GenerateFormValidation()
在 D:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Helper\FormGenerator.cs:line 70 中的 Fusion.UI.MvcWebUX.Helper.FormGenerator.GenerateForm()
在 D:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Helper\FormGenerator.cs:line 60 中的 Fusion.UI.MvcWebUX.Helper.FormGenerator.RenderForm(ViewPage viewPage)
在 d:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Views\Shared\AutoView.aspx:line 7 中的 ASP.views_shared_autoview_aspx.__RenderContent2(HtmlTextWriter __w, Control parameterContainer)
在 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 编写器)
在 d:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Views\Shared\Fusion.Master:line 74 中的 ASP.views_shared_fusion_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer)
在 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(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)
内部异常:
我已经为此苦苦挣扎了几个小时。谁能帮我解决它并告诉我为什么会发生这种情况。
【问题讨论】:
-
我发现了它的问题。在编写 BeginForm 之后,我一直在设置 EnableClientValidation。只需写 _viewPage.Html.EnableClientValidation();在表单上的任何内容之前,错误已解决。谢谢,
标签: c# javascript asp.net-mvc keynotfoundexception