Asp.net MVC scheduler的实现方法详解

yizhihongxing

Asp.net MVC scheduler是一个常用的日程管理工具,它可以帮助用户方便地安排和管理个人或团队的任务和时间安排。下面是Asp.net MVC scheduler的实现方法详解:

1. 安装和配置Asp.net MVC scheduler插件

首先要在Asp.net MVC项目中安装和配置scheduler插件。这个插件可以从官方网站下载,也可以通过NuGet安装。简单的配置例子如下:

//在BundleConfig.cs文件中
bundles.Add(new ScriptBundle("~/plugins/scheduler/js").Include(
                "~/Scripts/plugins/scheduler/dhtmlxscheduler.js",
                "~/Scripts/plugins/scheduler/dhtmlxscheduler_timeline.js"));

bundles.Add(new StyleBundle("~/plugins/scheduler/css").Include(
                "~/Content/plugins/scheduler/dhtmlxscheduler.css",
                "~/Content/plugins/scheduler/dhtmlxscheduler_timeline.css"));

//在Layout.cshtml文件中
@Styles.Render("~/plugins/scheduler/css")
@Scripts.Render("~/plugins/scheduler/js")

2. 实现Asp.net MVC scheduler主体功能

接着就要在项目中实现Asp.net MVC scheduler的主体功能。这个过程需要定义多个视图、控制器和模型,用于展示和编辑日程、获取日程数据、验证输入等。以下是一个简单示例:

//控制器代码
public class SchedulerController : Controller
    {
        private SchedulerDataContext db = new SchedulerDataContext();

        public ActionResult Index()
        {
            return View();
        }

        public JsonResult Data()
        {
            var events = db.Events.ToList();

            var data = from ev in events
                       select new
                       {
                           id = ev.Id,
                           text = ev.Text,
                           start_date = ev.StartDate.ToString(),
                           end_date = ev.EndDate.ToString(),
                           color = ev.Color
                       };

            return Json(data, JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public ActionResult Save(Event ev, FormCollection form)
        {
            if (ModelState.IsValid)
            {
                if (ev.Id == 0)
                {
                    db.Events.Add(ev);
                }
                else
                {
                    db.Entry(ev).State = EntityState.Modified;
                }

                db.SaveChanges();
            }

            return new EmptyResult();
        }

        [HttpPost]
        public ActionResult Delete(Event ev)
        {
            db.Events.Remove(db.Events.Find(ev.Id));
            db.SaveChanges();

            return new EmptyResult();
        }
    }

//视图代码
@{
    ViewBag.Title = "Asp.net MVC Scheduler";
}

<div style="width:600px;">
    @(Html.Kendo().Scheduler<Event>()
        .Name("scheduler")
        .Date(DateTime.Now)
        .StartTime(new DateTime(2016, 12, 1, 0, 0, 0))
        .EndTime(new DateTime(2016, 12, 1, 23, 59, 59))
        .Height(600)
        .Editable(true)
        .Views(views =>
        {
            views.DayView();
            views.WeekView();
            views.MonthView();
            views.AgendaView();
        })
        .DataSource(d => d
        .Model(m =>
        {
            m.Id(f => f.Id);
            m.Field(f => f.StartDate).DefaultValue(DateTime.Now);
        })
        .Create(c => c.Action("Save", "Scheduler"))
        .Read(r => r.Action("Data", "Scheduler"))
        .Update(u => u.Action("Save", "Scheduler"))
        .Destroy(d => d.Action("Delete", "Scheduler"))
        .ServerFiltering(true)
        .ServerPaging(true))
    )
</div>

以上代码实现了一个简单的Asp.net MVC scheduler。它包括了日程(事件)列表的获取和保存操作,以及日程的显示、编辑、创建和删除等功能。

3. 其他扩展功能

除了上面的主体功能外,Asp.net MVC scheduler还可以实现其他一些扩展功能,比如:

  • 添加颜色、标签等元素:可以在数据源模型Event中新建属性,再在视图中使用它们来显示颜色、标签等元素。
  • 实现导航和搜索:可以在视图中添加一些控件,用于实现导航和搜索功能。
  • 导入和导出日程:可以将日程数据导入或导出到Excel或其他格式中。

示例1:添加颜色和标签

//EventDataModel.cs工具类代码
public class Event
    {
        public int Id { get; set; }

        public string Text { get; set; }

        public DateTime StartDate { get; set; }

        public DateTime EndDate { get; set; }

        public string Color { get; set; }  //新建颜色属性

        public string Tags { get; set; }   //新建标签属性
    }

//视图代码
@(Html.Kendo().Scheduler<Event>()
        .Name("scheduler")
        .Date(DateTime.Now)
        .StartTime(new DateTime(2016, 12, 1, 0, 0, 0))
        .EndTime(new DateTime(2016, 12, 1, 23, 59, 59))
        .Height(600)
        .Editable(true)
        .Views(views =>
        {
            views.DayView();
            views.WeekView();
            views.MonthView();
            views.AgendaView();
        })
        .DataSource(d => d
        .Model(m =>
        {
            m.Id(f => f.Id);
            m.Field(f => f.StartDate).DefaultValue(DateTime.Now);
            m.Field(f => f.Color).DefaultValue("green");   //设置颜色默认值
            m.Field(f => f.Tags).DefaultValue("new");      //设置标签默认值
        })
        .Create(c => c.Action("Save", "Scheduler"))
        .Read(r => r.Action("Data", "Scheduler"))
        .Update(u => u.Action("Save", "Scheduler"))
        .Destroy(d => d.Action("Delete", "Scheduler"))
        .ServerFiltering(true)
        .ServerPaging(true))
)

//修改Data()方法,将颜色和标签加入日程中
public JsonResult Data()
        {
            var events = db.Events.ToList();

            var data = from ev in events
                       select new
                       {
                           id = ev.Id,
                           text = ev.Text,
                           start_date = ev.StartDate.ToString(),
                           end_date = ev.EndDate.ToString(),
                           color = ev.Color,  //加入颜色
                           tags = ev.Tags     //加入标签
                       };

            return Json(data, JsonRequestBehavior.AllowGet);
        }

示例2:实现导航和搜索

//视图代码
@(Html.Kendo().Scheduler<Event>()
        .Name("scheduler")
        .Date(DateTime.Now)
        .StartTime(new DateTime(2016, 12, 1, 0, 0, 0))
        .EndTime(new DateTime(2016, 12, 1, 23, 59, 59))
        .Height(600)
        .Editable(true)
        .Views(views =>
        {
            views.DayView();
            views.WeekView();
            views.MonthView();
            views.AgendaView();
        })
        .Toolbar(t =>
        {
            t.Date();
            t.Search();
            t.Custom("navButtons");
        })
        .DataSource(d => d
        .Model(m =>
        {
            m.Id(f => f.Id);
            m.Field(f => f.StartDate).DefaultValue(DateTime.Now);
            m.Field(f => f.Color).DefaultValue("green");   //设置颜色默认值
            m.Field(f => f.Tags).DefaultValue("new");      //设置标签默认值
        })
        .Create(c => c.Action("Save", "Scheduler"))
        .Read(r => r.Action("Data", "Scheduler"))
        .Update(u => u.Action("Save", "Scheduler"))
        .Destroy(d => d.Action("Delete", "Scheduler"))
        .ServerFiltering(true)
        .ServerPaging(true))
        .Messages(m => m.Today("今天").EmptyMessage("没有日程"))
)

//控制器代码
public class SchedulerController : Controller
    {
        private SchedulerDataContext db = new SchedulerDataContext();

        public ActionResult Index()
        {
            return View();
        }

        public JsonResult Data(DateTime? start, DateTime? end)
        {
            var events = db.Events.ToList();

            if (start != null && end != null)
            {
                events = events.Where(e => e.StartDate >= start && e.EndDate <= end).ToList();
            }

            var data = from ev in events
                       select new
                       {
                           id = ev.Id,
                           text = ev.Text,
                           start_date = ev.StartDate.ToString(),
                           end_date = ev.EndDate.ToString(),
                           color = ev.Color,
                           tags = ev.Tags
                       };

            return Json(data, JsonRequestBehavior.AllowGet);
        }
    }

上面的代码实现了两个示例,一个是添加颜色和标签,另一个是实现导航和搜索。这些扩展功能可以帮助用户更方便、快捷地管理日程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Asp.net MVC scheduler的实现方法详解 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 边缘计算或将吞掉云计算,玩家们各怀心事谁会胜出?

    边缘计算已成为物联网的重要趋势。最近Micron/Forrester的调查证实了这一趋势:在未来三年中,53%的人认为应该通过边缘计算处理分析复杂的数据集。因此,有人大胆预测,“边缘计算将吞掉云”。 边缘计算备受推崇的原因是其解决了工业物联网实现中的一些关键性问题。通过处理大量的传感器数据,边缘计算可以降低网络上的数据传输成本以及云数据的存储成本。 边缘计算…

    云计算 2023年4月13日
    00
  • 云计算的四大缺陷

    1、你没有控制权,唯有任人摆布。 这是很多客户最难理解的部分。当你将服务移植到云上,你就不可以直接控制你的服务。这是现实中IT技术员难以适应的重大变化,你不能随便登录服务器并检查运行情况,你只能像个最终客户那样提交申请。业务要调整到云计算上也是一件挻麻烦的事情。当所有的服务都在你公司内部时,你可打电话叫来维修人员,或干脆冲入机房大喊直到所有事情得到解决,无论…

    云计算 2023年4月12日
    00
  • 转载:开源与云计算

    简介 我相信开放和互操作的益处将最终成为主流,我们将看到一个由合作的程序组成的系统,它们不属于同一公司,一个internet操作系统就像是在PC体系结构上的Linux,由无数软件组成。 翻译:yuwen   几年来我一直担心开源运动可能会遭受Kim Stanley Robinson在“Green Mars”中精辟论述的问题:“历史的浪潮比我们做得还要快。”创…

    云计算 2023年4月11日
    00
  • 五十二.用户配额管理 云主机类型管理 、 镜像管理 网络管理 案例和实例管理 、 安装额外计算节点

    1.用户和配额管理 创建myproject项目 通过Horizon创建user1用户 通过CLI创建user2用户,练习相关用户管理命令 通过Horizon和CLI对myproject进行配额调整   通过命令创建myproject项目 stack ~]# source ~/keystonerc_admin  //初始化环境变量 admin)]# opens…

    云计算 2023年4月10日
    00
  • 本地 vs. 云:大数据厮杀的最终幸存者会是谁?— InfoQ专访阿里云智能通用计算平台负责人关涛

    摘要: 本地大数据服务是否进入消失倒计时?云平台大数据服务最终到底会趋向多云、混合云还是单一公有云?集群规模增大,上云成本将难以承受是误区还是事实?InfoQ 将就上述问题对阿里云智能通用计算平台负责人关涛进行了专访。 一家企业什么时候会决定上云?过去,这个问题的答案可能是当企业发现需要购买新的硬件进行新一轮资本投入时,往往倾向于考虑另一种替代方案,比如云,…

    云计算 2023年4月13日
    00
  • java代码在阿里云函数计算中的应用

      分享一个阿里云函数计算的java应用。   服务的功能是获取OSS中PPT模板,加载OSS中图片文件,合成PPT导出文件后,把文件回传到OSS方便下载的应用。   移植到函数计算的目的是OSS文件都在阿里云中,服务器迁移到了腾讯云,让代码更靠近数据,方便计算。   MAVEN配置里的build这块比较重要,把关联jar都会打包到一个jar中,这样才能上传…

    云计算 2023年4月11日
    00
  • 大数据应用开发流程

    通常将大数据应用开发分为五个步骤:获取、存储、处理、访问以及编制,获取是指获取一些辅助数据,例如来自CRM、生产数据(ODS)的数据,并将其加载入分布式系统(如Hadoop)为下一环节处理做准备。存储是指对分布式文件系统(GFS)或NoSQL分布式存储系统、数据格式)、压缩和数据模型的决策。处理是指将采集的原始数据导入到大数据管理系统,并将其转化为可用于分析…

    2023年4月10日
    00
  • Python3中对json格式数据的分析处理

    下面是“Python3中对json格式数据的分析处理”的完整攻略: 一、什么是json格式数据? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript(即JavaScript)的一个子集。JSON采用完全独立于语言的文本格式,可以被任意编程语言读取和处理。JSON格式常用于Web端和移动端数据…

    云计算 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部