2012-03-01 6 views
4

パラメータの1つがnull可能intであるコントローラメソッドに値を送信すると、バグが発生します。 手順を再現するために:リクエストパラメータからメソッドパラメータへのASP.NET MVC3 RC2バグのバインド

私が作成した試験方法

[HttpPost] 
public ActionResult PostTest(string from, int? number, bool? formsearch) 
{ 
return new ContentResult { Content = string.Format("{0}/{1}/{2}", from, number, formsearch) }; 
} 

をjqueryのを使用して、私はPOSTリクエスト

$.post("http://localhost/mysite/test/posttest",{ from:"1//1/2009",number:"156",formsearch:true}); 

リクエストを作成する明確な値を示している(例えばシオマネキには。)が送信されています:

投稿者:1 // 1/2009 番号:156 formsearch:true

が、この関数から返される結果は次のとおりです。

1 // 2009分の1 //真

私はint型を変更した場合は?数が数をintに、結果は正しいです:

1 ///2009 156分の1 MVC3のRC1では/トゥルー

これがNULL可能でint型

アップデートで何の問題もなく働いていた:私はドン」新しく作成されたMVC3 Webサイトに問題があるようです。 nullable intへのモデルバインディングに影響を与える私のプロジェクトでは何ができますか?なぜRC1とRC2の違いがあるのでしょうか?誰でもこのモデルバインディングの問題をデバッグするための提案がありますか?

+5

サイトをMVC3 RTMに更新できませんか? –

答えて

2

これは、MVC 3 RC2リリースの既知のバグです。

  • のNullableアクションメソッドのパラメータに問題がある:あなたがして、コントローラのアクションメソッドを持っている場合ScottGu said:

    我々は、少なくとも2つのシナリオで現れるメタデータのキャッシングのバグのいくつかの報告を見てきました(intのような)null可能なパラメータ、またはnull可能なサブプロパティを持つ複合型の場合、null可能なパラメータは、要求にパラメータの有効な値が含まれている場合でも常にnullになる可能性があります。私はリンク

ブログの記事は、回避策が含まれています

// Workaround to fix RC2 bug with Metadata caching 
ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider(); 

をしかし、本当にあなたがRTMに更新する必要があります:あなたのApplication_Startに行を追加します。 RC2のライブライセンスがRTMリリースを過ぎても生き残れば、私は非常に驚くだろう。

関連する問題