Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC 3维护来自实体的列表属性的顺序_C#_Jquery_Asp.net Mvc 3_Scheduled Tasks - Fatal编程技术网

C# MVC 3维护来自实体的列表属性的顺序

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

我遇到了一个我正在做的项目的问题。我有一个任务调度程序。模型由作业和任务组成。工作和任务有多对多的关系。我通过“列表任务”属性维护与作业中任务的关系。我希望用户能够按照特定的顺序排列任务列表,以便我能够以精确的方式执行它们。我构建了对任务进行排序的方法,但是代码优先框架总是按照基于ID的顺序维护关系。因此,顺序丢失了。有人知道如何在MVC3中实现这样的东西吗

  #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的原始多对多关系一样。