@helper内で拡張メソッドの~For系を使いたい(1/2)

~For系のメソッドなんですが、例えばDisplayForTextBoxForとかいったやつ。

これ、いいですよねぇ。ラムダ式いれるだけで、モデル内項目を推論してくれてコードがスッキリかつタイプミスが減ります。

@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で見つけましたが、見た感じできないし、実際にコード内にコピペしてもコンパイルエラーっす。

 表題の記事的にはこれでおしまいです。

おじさんは、どーしてもコード内をすっきりさせたくて、がんばっちゃいました。

続きは、ねみぃーので、次回書きますです。