4

C# 4 で名前付き引数とオプションのパラメーターをいじっています。

特に、ASP.NET MVC で HtmlHelpers を呼び出すときに名前付き引数を使用しようとしています...

@Html.DropDownList(name: "ItemGroup", 
                   selectList: Model.ItemGroupList, 
                   htmlAttributes: new { style="width:300px;" })

しかし、文字列値の代わりにラムダ式を最初のパラメーターとして受け取る厳密に型指定されたヘルパーを使用したい場合はどうすればよいでしょうか?

@Html.DropDownListFor(expression: m => m.ItemGroup, 
                      selectList: Model.ItemGroupList, 
                      htmlAttributes: new { style = "width:300px;" })

上記のコードは、「型引数...使用法から推測できません」という行に沿ったエラーを示しています。

偶然にも、これはうまく機能します...

@Html.DropDownListFor(m => m.ItemGroup, 
                      selectList: Model.ItemGroupList, 
                      htmlAttributes: new { style = "width:300px;" })

これはおそらく非常に明白なことですが、検索してもうまく説明できるものを見つけるのに苦労しています。私はおそらく適切な用語などを探していません。とにかく、私は正しい方向にナッジを使うことができました.

4

1 に答える 1

1

「型引数...使用法から推測できません」というエラーについては、selectList引数に送信されたオブジェクトがSelectListではなくListである場合にのみ取得できました。これは私にとって正しくレンダリングされました:

Html.DropDownListFor(x => x.ReferralAgencyId,
                selectList: new SelectList(Model.ReferralAgencies, "ReferralAgencyId", "Description", Model.ReferralAgencyId))

これにより、ページがクロックされ、レンダリングされなくなります。

Html.DropDownListFor(expression: x => x.ReferralAgencyId,
                selectList: new SelectList(Model.ReferralAgencies, "ReferralAgencyId", "Description", Model.ReferralAgencyId))

ラムダ式に「expression:」を指定するとページがハングする理由については、よくわかりません。Url.Action(actionName:"MyPage", controllerName: "MyController") は正常にレンダリングされるため、オプションのパラメーターではないため、そうではありません。ラムダ式だけがこの動作を引き起こしているようです。

于 2011-05-09T20:59:48.303 に答える