0

同じ基本クラス(BaseFilter)から継承するフィルターのリストがあるシナリオがあります。これは、ユーザーが選択したものに基づいて、特定の順序で異なるテンプレートを使用していくつかでレンダリングされます。javascriptを介してそのデータを取得し、強く入力List<IBaseFilter>されたにajaxリクエストを介して送信するための最良の方法は何ですかActionResult。モデルバインダーを使用する必要がありますか?使用する場合は、リストを使用しIFiltersますか?

public ActionResult Save(List<IFilter> filters)
{
}

public FirstFilter : BaseFilter {
  // Has Two Properties
}

public SecondFilter : BaseFilter {
  // Has One Property
}
4

2 に答える 2

0

基本的に、Binders は FormCollection の内容を取得し、適切なモデル オブジェクトに変換します。おそらく、カスタマイズされたバインダー (IModelBinder 実装) を作成して、すべてを行うことができます。この投稿を参照して、それらがどのように機能するかを理解してください。

于 2012-05-31T05:47:24.570 に答える
0

子から親へのキャストは、すべての子プロパティを失い、親プロパティのみを取得することを意味します。バインド フィルターをモデル化するとIFilter、 に存在するプロパティのみIFilterが利用可能になります。2 つのアクション メソッドを作成し、可能であればフィルターを連続して保存し、それらのアクションで厳密に型指定されたモデル バインディングを使用することをお勧めします。もう 1 つのオプションとして、アクション メソッドにデータを送信することもできますが、ASP.NET MVC で着信パラメーターをパラメーターにバインドさせるのではなく、HTTP 要求から手動で情報を抽出しList<IFilter>ます。

于 2012-05-31T05:32:39.423 に答える