В настоящее время я пишу переопределения для предоставления собственных реализаций элементов управления MVC. Я хотел бы работать с дополнительными параметрами, поэтому он сохраняет мне работу по написанию и поддержанию нескольких переопределений, как я решил это сейчас.Параметр Params при использовании необязательных параметров
Пример моего звонка
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 });
Есть ли у кого-нибудь идеи, как я могу это сделать? Или я обречен продолжать работать с переопределениями?
Включить System.Linq? Мне кажется, что это должно сработать. Мне интересно, существует ли выражение в другом месте в пространстве имен как нечто совершенно другое. Однако я не знаком с MVC. – Mark
Ваша строго типизированная версия должна работать. По крайней мере, он компилируется с моей Visual Studio 2012 без ошибок. Вы сказали, что компилятор не распознает класс Expression, у вас есть «using System.Linq.Expressions;» в вашем коде? –