2014-11-18 2 views
0

У меня есть webgrid MVC, который я заполняю пользовательскими объектами.Как получить объект из webgrid.

@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> 

У меня есть следующий код, который должен отображать частичный вид, когда пользователь выбран так, чтобы его данные можно редактировать.

<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 

Но когда строка выбрана переменная пользователь всегда выглядит хорошо, но в том месте, где это передается с частичным видом на I получить ошибку

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 класс. Может ли кто-нибудь пролить свет на то, как обойти это?

ответ

0

Вместо использования @RenderPage попробовать

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

работает для меня.

Смежные вопросы