0

私は現在、MVC コントロールの独自の実装を提供するためにオーバーライドを作成しています。オプションのパラメーターを使用して作業したいので、今解決したように、複数のオーバーライドを作成して維持する作業を節約できます。

私の呼び出しの例

public static MvcHtmlString MyControlFor<TModel, TValue>(this HtmlHelper<TModel> html
                                                       , Expression<Func<TModel, TValue>> expression
                                                       , object htmlAttributes = null
                                                       , params Expression<Func<TModel, object>>[] expressions)

オプションのパラメーターを使用していて、それらすべてを提供していない場合は、名前付きパラメーターを使用する必要があります。その場合、配列オブジェクトを params パラメーターに渡して機能させる必要があることも知っています。しかし、ここで私はこれを行う方法を理解できません。

次を呼び出すと、次のエラーが発生します (CS0826: 暗黙的に型指定された配列に最適な型が見つかりません)。

@Html.MyControlFor(x => x.property, expressions: new [] { x=>x.property2, x=>x.property3 });

コンパイラが Expression クラスを認識しないため、強い型の配列を渡すことも解決策ではないようです。したがって、以下は機能しないようです

@Html.MyControlFor(x => x.property
                 , expressions: new Expression<Func<TModel, object>>[] { x=>x.property2, x=>x.property3 });

これを機能させる方法を知っている人はいますか? それとも、オーバーライドを使い続ける運命にあるのでしょうか?

4

2 に答える 2

0

次のように、using ステートメントを Razor ビューに追加できます。

@using System.Linq.Expressions
于 2013-06-16T01:29:29.860 に答える