2009-10-07 9 views
11

"このプロパティセッターは、値がModelMetadata.Modelから派生しているため、廃止されました。

上記のガイドを使用して、ASP.NET MVCアプリでいくつかの検証を実装しています。新しいメッセージを作成するために、送信ボタンを押したとき

我々は行番号を持っていない、次のエラーThis property setter is obsolete, because its value is derived from ModelMetadata.Model now.を受け取り、それは単に爆発します。

オブジェクトがDBML

でエラーを引き起こしているかについての任意の提案を生成しているので、我々は(上記のガイドの下を参照)メタデータの例を使用する必要がされていますか?

答えて

28

新しいModelBindingContextを作成し、MVC 2プレビュー2以上でModelTypeプロパティを設定しようとすると、このエラーが発生します。は例えば、MVCの古いバージョンのカスタムモデルバインダーのためのユニットテストでは、私は以下のようなコードを持っていた:私はMVC 2プレビュー2にアップデートすると、あなたが述べたよう

internal static T Bind<T>(string prefix, FormCollection collection, ModelStateDictionary modelState) where T:class 
    { 
     var mbc = new ModelBindingContext() 
     { 
      ModelName = prefix, 
      ModelState = modelState, 
      ModelType = typeof(T), 
      ValueProvider = collection.ToValueProvider() 
     }; 
     IModelBinder binder = new MyModelBinder(); 
     var cc = new ControllerContext(); 
     return binder.BindModel(cc, mbc) as T; 
    } 

、私は同じエラーを得ました。私はModelTypeの割り当てを除去し、ModelMetadataへの割り当てに置き換えている

internal static T Bind<T>(string prefix, FormCollection collection, ModelStateDictionary modelState) where T:class 
    { 
     var mbc = new ModelBindingContext() 
     { 
      ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(T)), 
      ModelName = prefix, 
      ModelState = modelState, 
      ValueProvider = collection.ToValueProvider() 
     }; 
     IModelBinder binder = new MyModelBinder(); 
     var cc = new ControllerContext(); 
     return binder.BindModel(cc, mbc) as T; 
    } 

注:この修正は、これにこのコードを変更することでした。 Visual Studioでは、実際にこのエラーが発生しているコード行を教えてください。

+0

私は今これを試してみるつもりです、ありがとうございます - 私はあなたなしでここにいたでしょう。しかしこれはバグですか?私たちが間違っていることは何ですか?ただ、追加する – LiamB

+0

、私は、DLL(ライン47 DataAnnotationsModelBinder.cs) "のvar innerContextは=新しいModelBindingContext(){ モデル= propertyDescriptor.GetValue(bindingContext.Model)、 のModelName = fullPropertyKey、 にModelState =でエラーを検出しましたbindingContext.ModelState、 ModelType = propertyDescriptor.PropertyType、 ValueProvider = bindingContext.ValueProvider }; ' – LiamB

+0

あなたのコードはcompletleyの異なるオブジェクトを使用しているようですか? – LiamB

関連する問題