@helper内で拡張メソッドの~For系を使いたい(1/2)
~For系のメソッドなんですが、例えばDisplayFor
やTextBoxFor
とかいったやつ。
これ、いいですよねぇ。ラムダ式いれるだけで、モデル内項目を推論してくれてコードがスッキリかつタイプミスが減ります。
@Html.TextBoxFor(model => model.CountryName)
これだけで、とあるモデルのCountryName
項目をinput
要素で吐き出してくれます。
でも、モデルの項目が多いと、ちょっとした調整をモデル項目分書かなきゃいけないので、これ面倒っす。(特に僕のような年寄りだと手がツリマス)
そこで、@helper
を使って効率をあげちゃおうと考えます。
ただ、この@helper
の引数は、簡単なやつならおkなんですけど、モデルを推論してほしい引数にすることは、超調べましたが一応できないという結論に達しました。orz
やりたいこと↓
@helper CountryNameRow(Expression<Func<TModel, TValue>> expression) { @Html.TextBoxFor(expression, new { @class = "form-control" }) // とかさ、色々やってみたいのだよ。 }
使うとき↓
@CountryNameRow(item => item.CountryName)
これできると、めっちゃ楽ですやん。でもできません
できそうなことをMSDNで見つけましたが、見た感じできないし、実際にコード内にコピペしてもコンパイルエラーっす。
表題の記事的にはこれでおしまいです。
が
おじさんは、どーしてもコード内をすっきりさせたくて、がんばっちゃいました。
続きは、ねみぃーので、次回書きますです。