Эксперты,
Теперь я добавил следующий код в TabMasterController
private CAFMEntities db = new CAFMEntities();
public ViewResult Index(string sortorder, int? pagesize, int? page)
{
int pageSize = pagesize ?? 10;
if (Request.HttpMethod != "GET")
{
page = 1;
pageSize = 10;
}
ViewBag.SelectedPageSize = pageSize;
ViewBag.CurrentSort = sortorder;
ViewBag.FirstNameSortParm = String.IsNullOrEmpty(sortorder) ? "FirstName desc" : "";
ViewBag.LastNameSortParm = sortorder == "LastName" ? "LastName desc" : "LastName";
ViewBag.DepNameSortParm = sortorder == "depName" ? "depName desc" : "depName";
var joined = from tm in db.TabMasters
join tk in db.TabKeys on tm.colID equals tk.colID
join td in db.TabDeps on tk.depID equals td.depID
select new { tm.FirstName, tm.LastName, tk.colID, tk.depID, td.depName };
switch (sortorder)
{
case "FirstName":
joined = joined.OrderBy(m => m.FirstName);
break;
case "FirstName desc":
joined = joined.OrderByDescending(m => m.FirstName);
break;
case "LastName":
joined = joined.OrderBy(m => m.LastName);
break;
case "LastName desc":
joined = joined.OrderByDescending(m => m.LastName);
break;
case "depName":
joined = joined.OrderBy(m => m.depName);
break;
case "depName desc":
joined = joined.OrderByDescending(m => m.depName);
break;
default:
joined = joined.OrderBy(m => m.FirstName);
break;
}
int pageIndex = (page ?? 1) - 1;
int start = (pageIndex * pageSize);
ViewBag.TotalRecord = joined.Count();
ViewBag.StartRecord = start + 1;
ViewBag.EndRecord = ((start + pageSize) >= ViewBag.TotalRecord) ? ViewBag.TotalRecord : (start + pageSize);
return View(joined.ToPagedList(pageIndex, pageSize));
}
ОБНОВЛЕНО
namespace MVCMultilingual.Models
{
public class TabMasterModel
{
[ReadOnly(true)]
public int colID { get; set; }
[ReadOnly(true)]
public int depID { get; set; }
[DisplayName("FirstName")]
public string FirstName { get; set; }
[DisplayName("LastName")]
public string LastName { get; set; }
[DisplayName("depName")]
public string depName { get; set; }
}
}
и
@model PagedList.IPagedList<MVCMultilingual.Models.TabMasterModel>
но я не знаю, как установить вывод запроса в класс
Следующий код Индекс Страница TabMasterController
@model PagedList.IPagedList<MVCMultilingual.TabMaster>
@using Helper
@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table cellpadding="0" cellspacing="0" width="500">
<tr class="row-head">
<td>
@Html.ActionLink("FirstName", "Index", new { sortOrder = ViewBag.FirstNameSortParm, pagesize = ViewBag.SelectedPageSize })
</td>
<td>
@Html.ActionLink("LastName", "Index", new { sortOrder = ViewBag.LastNameSortParm, pagesize = ViewBag.SelectedPageSize })
</td>
<td>
@Html.ActionLink("depName", "Index", new { sortOrder = ViewBag.DepNameSortParm, pagesize = ViewBag.SelectedPageSize })
</td>
<td>
</td>
</tr>
@{
foreach (var row in Model.Select((item, index) => new { index, item }))
{
@Html.Raw(GridHelper.BeginRow(row.index));
<td>
@Html.DisplayFor(modelItem => row.item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => row.item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => row.item.depName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = row.item.colID }) |
@Html.ActionLink("Details", "Details", new { id = row.item.colID }) |
@Html.ActionLink("Delete", "Delete", new { id = row.item.colID })
</td>
@Html.Raw(GridHelper.EndRow());
}
}
@Html.Raw(GridHelper.BeginFooter(ViewContext.RouteData.Values["controller"].ToString(), 3, Convert.ToInt16(ViewBag.StartRecord), Convert.ToInt16(ViewBag.EndRecord), Convert.ToInt16(ViewBag.TotalRecord), Convert.ToInt16(Model.PageCount), Convert.ToInt16(Model.PageNumber), Convert.ToInt16(ViewBag.SelectedPageSize), ViewBag.CurrentSort, Model.HasPreviousPage, Model.HasNextPage))
@Html.Raw(GridHelper.EndFooter())
</table>
в этом коде я использую следующую строку
@model PagedList.IPagedList<MVCMultilingual.TabMaster>
Теперь я хотел бы добавить TabDep.depName на этой странице, но он выдаст мне ошибку
@Html.DisplayFor(modelItem => row.item.depName)
Ошибка:
MVCMultilingual.TabMaster не содержит определения для depName, и метод расширения depName, принимающий первый аргумент типа MVCMultilingual.TabMaster, не найден (отсутствует директива using или ссылка на сборку?)