私は自分のウェブサイトで頻繁に使用されているが、異なるフィールドで使用されている複雑なコントロールを一般化しようとしています。コントロールの機能は常に同じで、変更されるのは基になるフィールドだけです。
Expression<Func<TModel,TProperty>>
さまざまなフィールドを表示する方法を実現するために、パラメーターとしてを受け入れるHTMLHelper拡張機能を作成しようとしています。これには、コントロールでの表示に必要なクラスのプロパティが含まれます。例えば:
景色:
@model Project.Core.Page
@Html.MyHelper(p => new { p.Author.Name, p.Author.Location, p.Author.Age });
これは私が問題を抱えている拡張機能です-ラムダで提供されたパラメーターを繰り返し処理して、それぞれにを提供しTextBoxFor()
たり、手動でinput
要素を作成してラムダパラメーターのvalue
とを入力したりするにはどうすればよいですか?name
psuedoの拡張:
public static MvcHtmlString MyHelper<TModel,TProperty>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel,TProperty>> expression) {
foreach (var parameter in expression.???) {
// helper.TextBoxFor(???)
// TagBuilder("input").Attributes("name", expression.???)
}
}
私はこれをずっとずっと見つめているように感じます、そして私はこれを達成することを私が見落としているもっと簡単な方法があると感じています。
どんな助けでも大歓迎です。さらに詳細が必要な場合、または重要なことを見逃した場合は、お知らせください。