0

他のさまざまなプロパティから値を計算するビューモデルに読み取り専用プロパティがあります。すべてのソース プロパティが使用できるわけではないため、投稿のモデル バインダーによって読み取られることは望ましくありません。

public class MyView
{
     public int MyReadOnlyProperty
     {
         get 
         {
             int result;
             //do stuff 
             return result;
         }
     }
}

[Bind(Exclude)]次のようにコントローラーメソッドに属性を追加しました。

[HttpPost]
public ActionResult Create([Bind(Exclude = "MyReadOnlyProperty")]MyView viewModel)
{
}

ただし、バインダーは引き続き除外されたプロパティを読み取ります。したがって、上記のコントローラー メソッドにポストバックすると、MyReadOnlyPropertyゲッターが実行されます。ただし、コントローラーメソッドが呼び出される前。バインダーが投稿のプロパティを読み取っているのは奇妙に思えます。フォームの値を使用してプロパティを設定するだけだと思います。

これを回避する方法を誰か教えてもらえますか?

4

1 に答える 1

0

このように試してみてください:

[HttpPost]
public ActionResult Create(MyView viewModel)
{
   ModelState.Remove("MyReadOnlyProperty");
}

それが役に立てば幸い


編集

[Bindable(false)]
public int MyReadOnlyProperty
     {
         get 
         {
             int result;
             //do stuff 
             return result;
         }
     }
于 2013-01-30T05:31:20.773 に答える