私はページにMVC WebGridを持っており、グリッドには各行の選択リンクがあります。同じビューの中から、WebGrid.SelectedRow
オブジェクトに関連付けられたモデルオブジェクトを取得し、ビュー内で使用したいと思います。同じビュー内からMVC WebGridのSelectedRowオブジェクトを使用するにはどうすればよいですか?
SelectedRow
オブジェクトにアクセスするすべての例では、オブジェクトを使用して別のビュー/部分表示にオブジェクトを渡す方法について説明しています。私の場合は、WebGridと同じビュー内からこのオブジェクトにアクセスしたいと思います。
一般的なサンプルコードです。エラーに関するコメントがあります。
@{
var grid = new WebGrid(dataCollection)
@grid.GetHTML(columns: "ID", "User ID"),
grid.Column("UserName","Name"),
grid.Column("", format: @<text>@item.GetSelectLink("Edit")</text>)
}
<!-- FURTHER DOWN IN MY MARKUP //-->
<div class="widget">
@if(grid.HasSelection)
{
var obj = @grid.SelectedRow;
//The example below reports the following error when
//navigating to this page:
//
//CS0039: Cannot convert type
// 'System.Web.Helpers.WebGridRow' to
// 'Models.User' via a reference
// conversion, boxing conversion, unboxing conversion,
// wrapping conversion, or null type conversion
usr = obj as User;
if (usr != null) <text>usr.ID</text>;
<!-- FIND A WAY TO PRINT SELECTED CONTENT -->
}
</div>
また、((User)@grid.SelectedRow)
などのキャストステートメントも試してみました。そのような場合は、ページが読み込まれますが、レコードを選択しようとすると、上記の行がヒットすると、ブラウザーは私に違った類似のエラーを表示します。
WebGrid.SelectedRow
モデルオブジェクトに、WebGridと同じビューからアクセスして使用するにはどうすればよいですか?
これは機能します。私は 'Value'プロパティを知らなかった。コードにブレークポイントを置き、メモリ内の値を検査することで、何か別のことが暗示されていました。具体的には、 'SelectedRow'オブジェクトが私のモデルオブジェクトであったはずです。ありがとうございました。 – RLH