C# MVC 3维护来自实体的列表属性的顺序
我遇到了一个我正在做的项目的问题。我有一个任务调度程序。模型由作业和任务组成。工作和任务有多对多的关系。我通过“列表任务”属性维护与作业中任务的关系。我希望用户能够按照特定的顺序排列任务列表,以便我能够以精确的方式执行它们。我构建了对任务进行排序的方法,但是代码优先框架总是按照基于ID的顺序维护关系。因此,顺序丢失了。有人知道如何在MVC3中实现这样的东西吗C# MVC 3维护来自实体的列表属性的顺序,c#,jquery,asp.net-mvc-3,scheduled-tasks,C#,Jquery,Asp.net Mvc 3,Scheduled Tasks,我遇到了一个我正在做的项目的问题。我有一个任务调度程序。模型由作业和任务组成。工作和任务有多对多的关系。我通过“列表任务”属性维护与作业中任务的关系。我希望用户能够按照特定的顺序排列任务列表,以便我能够以精确的方式执行它们。我构建了对任务进行排序的方法,但是代码优先框架总是按照基于ID的顺序维护关系。因此,顺序丢失了。有人知道如何在MVC3中实现这样的东西吗 #region JobModel public class Job { public int ID
#region
JobModel
public class Job
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime? Date { get; set; }
public int JobCategoryID { get; set; }
public virtual JobCategory JobCategory { get; set; }
public virtual List<Task> Tasks { get; set; }
}
#endregion
#region TaskModel
public class Task
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<Job> Jobs { get; set; }
}
虽然明确针对MVC2,但我发现本文和其中的代码非常有用 我使用它来完成您所描述的工作,将排序顺序嵌入到类的模型中,并在视图中进行排序 您应该能够创建javascript或其他操作来重新排序和调整每个元素的隐藏排序值。然后在post之后,每个元素都应该正确排序
祝那些对有效解决方案感兴趣的人好运 我首先删除了两个模型任务和作业之间的多对多关系。我了解到,对于复杂的数据集,MVC中的多对多关系可能会变得复杂。所以我建议尽可能避免这种关系。然后,我创建了一个局部视图,其中包含可以动态加载到作业/编辑控制器中的任务。我将@William Bonar推荐的job.Tasks.OrderBym=m.order传递给视图 添加任务时,我将上一个任务的order属性增加1,并添加到任务列表中。然后,我提供了一个jquery/ajax界面,供用户在列表中上下移动任务,它使用一些非常简单的逻辑来调整任务之间的顺序
希望这能帮助一些人 谢谢你的回复。我读了这篇文章,但里面几乎没有关于维持秩序的信息。您能否详细说明一下如何将排序顺序嵌入到模型中。。。我是否需要一个单独的属性,例如字符串[]排序器?我还必须确保这个顺序保持不变,因为我需要在视图之外引用它。没问题,我会将public int sortOrder{get;set;}添加到作业和任务模型中。当视图显示列表时,继续并在jobList.OrderBym=>m.sortOrder{//render Partial}中使用foreachvar项在每个editorRow的内部包含一个Html.HiddenForm=>m.sortOrder发布后,您应该能够对列表进行重新排序。我还发现,扩展文章中的集合代码,以便您可以提供Guid键,如果我今天下午有机会,我将试着整理一些当我有感谢时的示例代码。我修改了我的模型,因此删除了作业和任务的多对多关系。现在作业只能有一组唯一的任务。task现在与task模板有多对一的关系,在这里我可以实现任务之间的通用性,就像我希望与job和task的原始多对多关系一样。