如何从同一视图中使用 MVC WebGrid 的 SelectedRow 对象?
How can I use the SelectedRow object of a MVC WebGrid from within the same view?
我在页面上有一个 MVC WebGrid,我的网格上的每一行都有一个 selection link。在同一视图中,我想获取与 WebGrid.SelectedRow
对象关联的模型对象并在视图中使用它。
我发现的每个访问 SelectedRow
对象的示例都提供了有关如何使用该对象将对象传递到另一个 view/partial 视图的说明。在我的例子中,我想从与 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)
。在这种情况下,页面将加载,但一旦我尝试 select 一条记录并且上面的行被命中,浏览器就会给我不同但相似的错误。
如何从与我的 WebGrid 相同的视图中访问和使用 WebGrid.SelectedRow
模型对象?
希望以下回答对您有所帮助。会显示选中的行内容
@{
List<Person> person = new List<Person>();
person.Add(new Person { PersonCode = "1001", PersonName = "Satya Nadella" });
person.Add(new Person { PersonCode = "1002", PersonName = "Lisa Su" });
person.Add(new Person { PersonCode = "1003", PersonName = "Jeff Clarke" });
person.Add(new Person { PersonCode = "1004", PersonName = "Mark Fields" });
person.Add(new Person { PersonCode = "1005", PersonName = "Phebe Novakovic" });
person.Add(new Person { PersonCode = "1006", PersonName = "Mary T. Barra" });
person.Add(new Person { PersonCode = "1007", PersonName = "Rajeev Suri" });
person.Add(new Person { PersonCode = "1008", PersonName = "Michel Combes" });
}
@{
WebGrid grid = new WebGrid(person, rowsPerPage: 10);
@grid.GetHtml(columns: grid.Columns(grid.Column("PersonCode", "Code"), grid.Column("PersonName", "Name"), grid.Column("", format: @<text>@item.GetSelectLink("Edit")</text>)))
}
<div>
@if (grid.HasSelection)
{
if (grid.SelectedRow != null)
{
<div>
Code: @grid.SelectedRow.Value.PersonCode
</div>
<div>
Name: @grid.SelectedRow.Value.PersonName
</div>
}
}
</div>
我在页面上有一个 MVC WebGrid,我的网格上的每一行都有一个 selection link。在同一视图中,我想获取与 WebGrid.SelectedRow
对象关联的模型对象并在视图中使用它。
我发现的每个访问 SelectedRow
对象的示例都提供了有关如何使用该对象将对象传递到另一个 view/partial 视图的说明。在我的例子中,我想从与 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)
。在这种情况下,页面将加载,但一旦我尝试 select 一条记录并且上面的行被命中,浏览器就会给我不同但相似的错误。
如何从与我的 WebGrid 相同的视图中访问和使用 WebGrid.SelectedRow
模型对象?
希望以下回答对您有所帮助。会显示选中的行内容
@{
List<Person> person = new List<Person>();
person.Add(new Person { PersonCode = "1001", PersonName = "Satya Nadella" });
person.Add(new Person { PersonCode = "1002", PersonName = "Lisa Su" });
person.Add(new Person { PersonCode = "1003", PersonName = "Jeff Clarke" });
person.Add(new Person { PersonCode = "1004", PersonName = "Mark Fields" });
person.Add(new Person { PersonCode = "1005", PersonName = "Phebe Novakovic" });
person.Add(new Person { PersonCode = "1006", PersonName = "Mary T. Barra" });
person.Add(new Person { PersonCode = "1007", PersonName = "Rajeev Suri" });
person.Add(new Person { PersonCode = "1008", PersonName = "Michel Combes" });
}
@{
WebGrid grid = new WebGrid(person, rowsPerPage: 10);
@grid.GetHtml(columns: grid.Columns(grid.Column("PersonCode", "Code"), grid.Column("PersonName", "Name"), grid.Column("", format: @<text>@item.GetSelectLink("Edit")</text>)))
}
<div>
@if (grid.HasSelection)
{
if (grid.SelectedRow != null)
{
<div>
Code: @grid.SelectedRow.Value.PersonCode
</div>
<div>
Name: @grid.SelectedRow.Value.PersonName
</div>
}
}
</div>