型号
public class Jobs
{
public List<string> JobNames { get; set; }
}
控制器
public class HomeController : Controller
{
public static List<string> sorteddailyreports= new List<string>();
static Jobs jobnames;
public static List<string> dailyreports = new List<string>();
public ActionResult GetJobs()
{
jobnames =new Jobs();
dailyreports = new List<string> { "M2I|0705","FGI|1220","SDI|0100" };
sorteddailyreports=dailyreports.ToList().OrderBy(x=> x.Split('|')[1].Trim()).ToList();
jobnames.JobNames = sorteddailyreports;
return View(jobnames);
}
public static int IsJobRan(string job)
{
int completed = 0;
if (true) //some condition
{
completed = 1;
}
else
{
completed = -1;
}
return completed;
}
}
视图
@model WebApplication1.Models.Jobs
<body>
@foreach(string jobdetails in Model.JobNames)
{
string job = jobdetails.Split('|')[0].Trim();
string runtime = jobdetails.Split('|')[1].Trim();
string fruntime = runtime.Substring(0, 2) + ":" + runtime.Substring(2, 2);
if (WebApplication1.Controllers.HomeController.IsJobRan(jobdetails)==1)
{
<tr>
@Html.Label(job)
</tr>
<tr>
@Html.Label(fruntime)
</tr>
}
<br />
}
</body>
我期望在view
中,如果method return 1
意味着作业完成,那么completed job should go down
,如果方法返回的不是1,那么job is sorted on the basis of runtime
。
例如:如果M2I
作业成功运行并返回1,则视图中预期的Output
。已完成作业M2I
应关闭,other jobs
(如SDI and FGI
)将根据运行时进行排序。
SDI 0100
FGI 1220
M2I 0705
我正在尝试但未获得所需结果的代码
sorteddailyreports = dailyreports.ToList()
.OrderBy(x => x.Split('|')[1].Trim())
.ToList();
Please amend the code, I am new in Asp.net MVC Thanks in advance.
我正在尝试通用移动方法移动已完成的列表到最后的前端页面。
添加此logic in Controller
以将完成的列表移动到最后一个索引,但仍无法在前端获得排序。在视图中调用此方法,但仍不确定此Move方法是否是用于前端排序的可行解决方案。
public static void Move(List<string> list, int newIndex, int oldIndex)
{
var item = list[oldIndex];
list.RemoveAt(oldIndex);
if (newIndex > oldIndex) newIndex--;
list.Insert(newIndex, item);
}
1条答案
按热度按时间7rfyedvj1#
您可以先查看前端gif图片。
还有这里的代码。
你应该学学the signalr in asp.net core。
Signalr的使用可以很好的进行实时通讯,后台任务执行过程可以通过WebSocket实时发送到前端页面,您可以根据需要实现前端页面的排序。
这里是一个完整的示例代码,你可以参考博客来实现你的需求。
Communicate the status of a background job with SignalR