3

誰かがその振る舞いを説明できるかもしれません:

最新バージョンのMvcContribのCheckBoxListを使用しています。ページを初めて読み込むときは、ビューを返すだけです。

return View(Product.GetProduct(productId)); 

そして、すべてがうまくいくようです。チェックボックスリストを含む、すべてのhtmlシンプルコントロールが正常に入力されました。

<%= this.CheckBoxList(model => model.Product.Statuses)
    .Options(Model.Statuses, model => model.Id, model => model.Name)
    .ItemFormat("{0}<br />")
%>

したがって、このフォームにはいくつかのボタンがあります。たとえば、ボタン「検索」()です。productIdで検索し、何か見つかった場合はそれを表示できます。したがって、productIdをコントローラーに渡し、このコントローラーは最初と同じ方法でビューを返します。

return View(Product.GetProduct(productId))

ちなみに、私は同じロジックを使用しています-すべて同じです:同じビュー、同じコントローラー、同じアクション…新しいものは何もありません。しかし、その場合、私はこのエラーメッセージを受け取ります:

文字列が有効なブール値として認識されませんでした。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.FormatException:文字列が有効なブール値として認識されませんでした。

ソースエラー:

Line 268:                              <labe**strong text**l for="group<%=item.Value%>"><%=item.Text%></label><br />
Line 269:                          <% } %>--%>
Line 270:                          <%= this.CheckBoxList(model => model.Product.Statuses).Options(Model.Statuses, model => model.Id, model => model.Name).ItemFormat("{0}<br />")%>
Line 271:                        </div>
Line 272:                        </div>   

ビューが最初にロードされた後、すべてのチェックボックスがオフになっている場合は検索をクリックしていますが、いずれかのチェックボックスがオンになっている場合は検索をクリックしています。このエラーが発生します。

私は助けが必要です。明るいアイデアはありますか?

4

1 に答える 1

2

CheckBoxList にはバグがあると思います。リストを検証するときに、チェック ボックスの値をブール型の変換可能な文字列 ("false"、"true") にする必要があります。

したがって、例で model => model.id を model => "true" に変更すると、エラーが発生しないことがわかります。

 <%= this.CheckBoxList(model => model.Product.Statuses).Options(Model.Statuses, model => "true", model => model.Name).ItemFormat("{0}<br />")%>

しかし、これはあなたが望むものではありません。私の回避策は、ModelState が有効でない場合に、ModelState から CheckBoxList (あなたの場合は model.Product.Statuses) の要素を削除することです。

ModelState で model.Product.Statuses の対応するキーを見つけて削除する必要があります。私の場合、次のスニペットを使用しています。モデルとプロパティを変更する必要があります。

if (!ModelState.IsValid)
{    
  ModelState.Remove(PropertyHelper<EmailModel>.GetProperty(x => x.Attachments).Name);
  ...

PropertyHelper フォームを使用しています 特定のプロパティの PropertyInfo を取得するには?

また、mvccontrib issue tracker でこの関連リンクを見つけました: http://mvccontrib.codeplex.com/workitem/7071

于 2010-11-19T20:46:57.723 に答える