19

ASP.NET MVC3 テスト アプリケーションに次の WebGrid があります。顧客のリストが表示されます。

@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns
         (
         grid.Column(format: (item) => Html.ActionLink("Edit", "Details", new { id = item.id })),
         grid.Column("Address.CompanyName"),
         grid.Column("Address.City")
         )
)

ここで興味深いのは、最初の列に追加した編集リンクです。単純な「編集」テストの代わりに、顧客のアカウント番号を使用したいと思います。しかし、そうすることは私に多くの問題を引き起こします。

私はもう試した:

grid.Column(format: (item) => Html.ActionLink(item.AccountNumber.ToString(), "Details", new { id = item.id })),

ただし、この例外が発生し続けるため、これがどのように機能するかについて理解できないことがあるようです:

CS1502: The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string, string, System.Func<dynamic,object>, string, bool)' has some invalid arguments

これが機能しない理由を誰かに説明してもらえますか? item.AccountNumber.ToString()「編集」と(綴りは別として)の違いは何ですか?

「編集」テキストを使用するとリンクが機能することに注意してください。これAccountNumberは長いです。

4

8 に答える 8

28

これは、日付を使用して行う方法の例です。

grid.Column(columnName: "Date", format: (item) => Html.ActionLink(((string)item.Date), "Edit", new { id = item.id })),          

ダイナミクス (アイテム) で拡張メソッド (Html.*) を使用することに注意する必要があります... csharp ではうまく機能しません。新しい {} プロジェクションを実行するか、ToString を呼び出すと、動的ではなくなります。または、(object)item.Id をキャストすることもできます。

ここから。

于 2011-05-29T13:32:50.073 に答える
5

VBでどのように見えるべきか疑問に思っている人がいる場合に備えて、例を次に示します。

grid.Column("PersonID", "Admin", Function(modelItem) Html.ActionLink("View", "Details", New With {.id = modelItem.PersonID}))
于 2012-08-17T09:12:05.857 に答える
2

私の場合、Derek Beattie ソリューションは機能していません。

そして、私はこれを使用します

 grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ID }), style: "column-action") 
于 2013-02-24T11:43:57.357 に答える
1

私の列は、Html.ActionLink にアクセスできないように見えるモデルで生成されていました。そのため、href を作成して MvcHtmlString として返す必要がありました。これが私がやったことです。

new WebGridColumn{ColumnName="FileName", Header= "File",
                Format = item => new MvcHtmlString("<a href='" + item.FileLink + "'>" + item.FileName +"</a>")
于 2015-05-28T14:15:41.990 に答える
0

グリッドには次のコードを使用します。それは私のために働いています。

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column(header: "Serial No", format:@<text><div>@(item.WebGrid.Rows.IndexOf(item) + 1)</div></text>),
        grid.Column(columnName: "Stdname", header: "Student Name"),
        grid.Column(header: "Email ID", format:@<text><a href="mailto:@item.Email">@item.Email</a></text>),
        grid.Column(header: "EDIT",format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ID })),
        grid.Column(header: "DETAILS", format: (item) => Html.ActionLink("Details", "Details", new { id = item.ID })),
        grid.Column(header: "DELETE", format: (item) => Html.ActionLink("Delete", "Delete", new { id = item.ID }))
))

これが役に立てば幸いです。

于 2015-09-22T07:37:37.513 に答える
0

私はこのように解決しました

grid.Column("Id", format: (item) => Html.ActionLink((string)item.id.ToString(), "Edit", new { id = item.id }))

于 2013-03-05T21:45:32.983 に答える
-1
 grid.Column("GiftID",canSort:false, format: (item => Html.ActionLink((string)(@item.GiftID).ToString(), "Edit", new { GiftID = @item.GiftID })))
于 2015-09-08T09:08:09.383 に答える