2

ビューに、フォーム全体を動的にレンダリングするヘルパー メソッドがあります。ここで、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="指定されたキーは辞書にありませんでした。" Source="System" StackTrace: System.Collections.Generic.SortedDictionary の System.ThrowHelper.ThrowKeyNotFoundException() で2.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, String message, IDictionary`2 htmlAttributes) at Fusion.UI.MvcWebUX.Helper.FormGenerator.GenerateFormValidation() in D:\EBS\Project.Fusion \Fusion.UI.MvcWebUX\Helper\FormGenerator.cs: D:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Helper\FormGenerator.cs の Fusion.UI.MvcWebUX.Helper.FormGenerator.GenerateForm() の 88 行目:D:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Helper\FormGenerator.cs の Fusion.UI.MvcWebUX.Helper.FormGenerator.RenderForm(ViewPage viewPage) の 70 行目:ASP.views_shared_autoview_aspx.__RenderContent2 の 60 行目( System.Web.UI.Control の d:\EBS\Project.Fusion\Fusion.UI.MvcWebUX\Views\Shared\AutoView.aspx:line 7 の HtmlTextWriter __w、Control parameterContainer)。System.Web.UI.Control.RenderChildren(HtmlTextWriter ライター) の RenderChildrenInternal(HtmlTextWriter ライター、ICollection の子) 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、コントロール parameterContainer) で d: \EBS\Project.Fusion\Fusion.UI.MvcWebUX\Views\Shared\Fusion.Master: System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) の System.Web.UI.Control.RenderChildren の 74 行目(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.UI.Page.Render(HtmlTextWriter ライター) でSystem.Web.UI.Control.RenderControlInternal(HtmlTextWriter ライター、ControlAdapter アダプター) の .Web.Mvc.ViewPage.Render(HtmlTextWriter ライター) System.Web.UI.Control.RenderControl(HtmlTextWriter ライター、ControlAdapter アダプター) System.Web の.UI.コントロール。System.Web.UI.Page.ProcessRequestMain の RenderControl (HtmlTextWriter ライター) (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) InnerException:

私はこれに数時間苦労しています。誰かがそれを解決するのを手伝ってくれて、なぜこれが起こっているのか教えてもらえますか.

4

2 に答える 2

1

私は解決策のためにここに2回来ましたので、これを引き起こす可能性のある別のことについても答えます。

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(); %>

このようないくつかの切断されたメソッド呼び出しから副作用が発生するのはかなりくだらないことです。ちょっとグローバル変数を思い出します。

于 2010-03-26T17:42:40.797 に答える
0

私はそれに問題を発見しました。BeginForm を書いた後、EnableClientValidation を設定していました。_viewPage.Html.EnableClientValidation(); と書くだけです。フォーム上の何かの前に、エラーが解決されました。ありがとう、

于 2010-02-04T05:47:30.683 に答える