2

grid.Column仕様のformat:プロパティでHtml.ActionLinkを使用する必要があります。私のコードは次のようになります:

grid.GetHtml(

  grid.Columns( 
    grid.Column(header: "Column 1", format: (item) => @<div class='webgrid-bookname-column-style'> @item.BookName </div>),
    grid.Column(header: "Column 2", format: (item) => Html.ActionLink(item.StartTime, "ShowShippingFileMessage", new { @id = item.BookName }))
  )
)

この構文を使用すると、「最適なオーバーロードされたメソッドの一致」のコンパイルエラーが発生します。System.Web.Helpers.WebGrid.Column(string, string, System.Func<dynamic,object>, string, bool)上記のitem.StartTimeを「編集」などの通常のテキストで変更すると、正常に機能します。

私はASP.NETを初めて使用しますが、上記のステートメントの何が問題になっているのかを理解するのを手伝ってもらえますか?

前もって感謝します。

4

2 に答える 2

1

formatパラメータはタイプFunc<dynamic, HelperResult>です。
を返す必要があります。を返す必要はありませHelperResultIHtmlStringこれは、インラインヘルパー
を渡すことができるようにこのように定義されています。 インラインヘルパーを渡すには、;を削除します。インラインヘルパーは、パラメーターを使用してラムダ式を暗黙的に生成します。通常のラムダ式を渡すには、インスタンス を返すようにする必要があります。sを取るので、あなたは書くでしょう
(item) =>item
HelperResult
HelperResultAction<TextWriter>

item => new HelperResult(w => w.Write(Html.ActionLink(...).ToHtmlString()))

編集:パラメータがとして宣言されていることに気づいていませんでしたFunc<dynamic, object>。つまり、インラインヘルパーまたはその他のラムダ式を渡すことができます。
2番目の例は機能するはずです。

インラインヘルパーを使用することもできます。HTMLタグなしでこれを行うには、特別な<text>タグを使用します。

item => @<text>@Html.ActionLink(...)</text>

Razorは<text>出力からをドロップします。

于 2011-11-01T00:38:32.007 に答える
0

渡す表示文字列は DateTime 型です。文字列を入力してみてください。

grid.Column(header: "Column 2", format: (item) => Html.ActionLink(item.StartTime.ToString(), "ShowShippingFileMessage", new { @id = item.BookName }))
于 2012-10-15T04:04:23.080 に答える