C# ASP NET核心MVC数据库列表视图,带对所有列进行排序
在我的C# ASP NET核心MVC数据库列表视图,带对所有列进行排序,c#,asp.net-mvc,asp.net-core,listview,C#,Asp.net Mvc,Asp.net Core,Listview,在我的FileManager.cshtml页面(下面的代码)中有一个列表视图,我需要对该视图中显示的所有列实现排序功能。我浏览了web和YouTube上的一些示例,但是有Javascript函数或“手工”名称空间。没有JScript,是否可以这样做? 谢谢你的帮助 “我的控制器”中的函数,该函数显示按记录的用户ID筛选的dbo.Files中的列表视图: private readonly TextCloudContext; 公共IActionResult文件管理器() { var user=\u
FileManager.cshtml
页面(下面的代码)中有一个列表视图,我需要对该视图中显示的所有列实现排序功能。我浏览了web和YouTube上的一些示例,但是有Javascript函数或“手工”名称空间。没有JScript
,是否可以这样做?
谢谢你的帮助
“我的控制器”中的函数,该函数显示按记录的用户ID筛选的dbo.Files
中的列表视图:
private readonly TextCloudContext;
公共IActionResult文件管理器()
{
var user=\u userManager.GetUserId(用户);
var items=Context.Files.Where(f=>f.UserID==user.ToList();
返回视图(项目);
}
TextCloudContext.cs中的字符串,在我的SQL Server表“文件”的“文件”表中具有get和set值:
最后,使用table类查看:
@DisplayNameFor(model=>model.Name)
@DisplayNameFor(model=>model.Extension)
@DisplayNameFor(model=>model.Date)
@Html.DisplayName(“操作”)
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Extension)
@DisplayFor(modelItem=>item.Date)
-这个Html还不起作用
@ActionLink(“下载”,“下载”,新的{fileName=item.ToString()})|
@ActionLink(“删除”,“删除”,新的{/*id=item.PrimaryKey*/})
}
基于,下面是一个工作演示,如下所示:
视图:
@model IEnumerable
请查看此项:
public DbSet<File> Files { get; set; }
public class File
{
public int Id { get; set; }
[Display(Name = "File Name")]
public string Name { get; set; }
public string Data { get; set; }
[Display(Name = "File Type")]
public string Extension { get; set; }
[Display(Name = "Date")]
public string Date { get; set; }
public string UserID { get; set; }
public TextCloudUser User { get; set; }
}
@model IEnumerable<File>
<table class="table">
<thead>
<tr>
<th>
<a asp-action="FileManager" asp-route-sortOrder="@ViewData["NameSortParm"]">@Html.DisplayNameFor(model => model.Name)</a>
</th>
<th>
<a asp-action="FileManager" asp-route-sortOrder="@ViewData["ExtensionSortParm"]">@Html.DisplayNameFor(model => model.Extension)</a>
</th>
<th>
<a asp-action="FileManager" asp-route-sortOrder="@ViewData["DateSortParm"]">@Html.DisplayNameFor(model => model.Date)</a>
</th>
<th>
@Html.DisplayName("Actions")
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Extension)
</td>
<td>
@Html.DisplayFor(modelItem => item.Date)
</td>
<td>
@Html.ActionLink("Download", "Download", new { fileName = item.ToString() }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</tbody>
</table>
public IActionResult FileManager(string sortOrder)
{
//var user = _userManager.GetUserId(User);
//var items = Context.Files.Where(f => f.UserID == user); //you may change this..
//for easy testing,i just create data manually..
var items = new List<File>()
{
new File(){ Id=1, Data="a", Date="2019-8-9", Extension=".jpg", Name="file1", UserID="1"},
new File(){ Id=1, Data="b", Date="2019-7-9", Extension=".png", Name="file2", UserID="2"},
new File(){ Id=1, Data="c", Date="2019-5-8", Extension=".png", Name="file3", UserID="3"},
new File(){ Id=1, Data="d", Date="2019-4-7", Extension=".jpg", Name="file4", UserID="4"}
}.AsQueryable();
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
ViewData["ExtensionSortParm"] = sortOrder == "Extension" ? "ext_desc" : "Extension";
switch (sortOrder)
{
case "name_desc":
items = items.OrderByDescending(s => s.Name);
break;
case "Date":
items = items.OrderBy(s => s.Date);
break;
case "date_desc":
items = items.OrderByDescending(s => s.Date);
break;
case "Extension":
items = items.OrderBy(s=>s.Extension);
break;
case "ext_desc":
items = items.OrderByDescending(s => s.Extension);
break;
default:
items = items.OrderBy(s => s.Name);
break;
}
return View(items);
}