如何从WebGrid获取对象. [英] How to get an object from the webgrid.

查看:77
本文介绍了如何从WebGrid获取对象.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个MVC网络网格,其中填充了用户对象.

I've got a MVC webgrid which i'm populating with user objects.

@model IEnumerable<UserSearchDisplayModel>    
<div class="user-search-list">
        @{
            var grid = new WebGrid(Model, defaultSort: "UserName", rowsPerPage: 25, selectionFieldName:"SelectedRow");
            }
       @grid.GetHtml(
       tableStyle: "webgrid-table",
       headerStyle: "webgrid-header",
       footerStyle: "webgrid-footer",
       alternatingRowStyle: "webgrid-alternating-row",
       selectedRowStyle: "webgrid-selected-row",
       rowStyle: "webgrid-row-style",
       mode: WebGridPagerModes.All,
       columns: grid.Columns(
       grid.Column("Edit", header: null, format:@<text>@item.GetSelectLink("Edit")</text>),
       grid.Column("Active", header: "Active", format:@<text><input name="checkbox" type="checkbox" value="@item.Active" disabled="disabled" @(item.Active==true?"Checked":null)/></text>, style:"webgrid-userActive"),
       grid.Column("UserName", header: "User Name", format:@<text>@item.UserName</text>, style:"webgrid-userName"),
       grid.Column("FirstName", header: "First Name", format:@<text>@item.FirstName</text>, style:"webgrid-userFirstName"),
       grid.Column("LastName", header: "Last Name", format:@<text>@item.LastName</text>, style:"webgrid-userLastName"),
       grid.Column("TeamName", header: "Team", format:@<text>@item.TeamName</text>, style:"webgrid-userTeamName"),
       grid.Column("DateLastLogin", "Date of last login", format:(item) =>string.Format("{0:dd-MM-yyyy}",item.DateLastLogin??""), style:"webgrid-userDateLastLogin"),
       grid.Column("PasswordChanged", "Password changed", format:(item) =>string.Format("{0:dd-MM-yyyy}",item.PasswordChanged??""), style:"webgrid-userPasswordChanged")
       ))
 </div>

然后我有以下代码,该代码应在选择用户时显示局部视图,以便可以编辑其详细信息.

I then have the following code which should display a partial view when a user is selected so that their details can be edited.

<div class="user-details" id="AdminUserDetails">
    @if (grid.HasSelection)
    {
        UserSearchDisplayModel user = grid.Rows[grid.SelectedIndex].Value;
        @RenderPage("~/Views/Admin/Users/_AdminUserDetails.cshtml", user)
    }
</div>

部分视图期望使用

@model UserSearchDisplayModel 

但是,当被选择的行的用户变量总是看起来确定,但在这何处被传递到局部视图我得到错误的点

But when a row is selected the user variable always looks ok but at the point where this is being passed to the partial view I get the error

The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[UserSearchDisplayModel]', but this dictionary requires a model item of type 'UserSearchDisplayModel'.

对我来说,这意味着用户变量实际上是IEnumerable对象,但是带有断点仅向我显示了UserSearchDisplayModel类的一个对象.谁能阐明如何解决这个问题?

This to me means that the user variable is actually an IEnumerable object but with a breakpoint on it's only shows me one object of my UserSearchDisplayModel class. Can anyone shed some light on how to get round this?

推荐答案

而不是使用@RenderPage try

Instead of using @RenderPage try

    UserSearchDisplayModel user = grid.Rows[grid.SelectedIndex].Value;
    @Html.Partial("_AdminUserDetails", user)

为我工作.

这篇关于如何从WebGrid获取对象.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆