怎样利用C# MVC框架做任务管理

发布时间:2024-11-29 14:25:32 作者:小樊
来源:亿速云 阅读:79

要使用C# MVC框架开发任务管理应用程序,你需要遵循以下步骤:

  1. 创建项目:首先,使用Visual Studio创建一个新的C# MVC Web应用程序项目。选择"MVC 5 应用程序(.NET Framework)"模板。

  2. 设计模型(Model):创建一个名为Task的模型类,用于表示任务的基本属性,如标题、描述、截止日期等。在Model文件夹中创建一个名为Task.cs的文件,并添加以下代码:

public class Task
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public DateTime DueDate { get; set; }
    public bool IsCompleted { get; set; }
}
  1. 创建控制器(Controller):在Controllers文件夹中创建一个名为TasksController的控制器类。这将负责处理与任务相关的所有请求。添加以下代码:
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using YourNamespace.Models;

namespace YourNamespace.Controllers
{
    public class TasksController : Controller
    {
        private readonly ITaskRepository _taskRepository;

        public TasksController(ITaskRepository taskRepository)
        {
            _taskRepository = taskRepository;
        }

        // GET: Tasks
        public ActionResult Index()
        {
            var tasks = _taskRepository.GetAllTasks();
            return View(tasks);
        }

        // GET: Tasks/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var task = _taskRepository.GetTaskById(id.Value);

            if (task == null)
            {
                return HttpNotFound();
            }

            return View(task);
        }

        // GET: Tasks/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: Tasks/Create
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "Title,Description,DueDate")] Task task)
        {
            if (ModelState.IsValid)
            {
                _taskRepository.AddTask(task);
                _taskRepository.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(task);
        }

        // GET: Tasks/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var task = _taskRepository.GetTaskById(id.Value);

            if (task == null)
            {
                return HttpNotFound();
            }

            return View(task);
        }

        // POST: Tasks/Edit/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "Id,Title,Description,DueDate")] Task task)
        {
            if (ModelState.IsValid)
            {
                _taskRepository.UpdateTask(task);
                _taskRepository.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(task);
        }

        // GET: Tasks/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var task = _taskRepository.GetTaskById(id.Value);

            if (task == null)
            {
                return HttpNotFound();
            }

            return View(task);
        }

        // POST: Tasks/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            var task = _taskRepository.GetTaskById(id);
            _taskRepository.DeleteTask(task);
            _taskRepository.SaveChanges();
            return RedirectToAction("Index");
        }
    }
}
  1. 创建存储库(Repository):为了简化数据访问,创建一个名为ITaskRepository的接口,并在Models文件夹中创建一个名为TaskRepository.cs的文件。添加以下代码:
using System.Collections.Generic;
using System.Linq;
using YourNamespace.Models;

namespace YourNamespace.Repositories
{
    public interface ITaskRepository
    {
        IEnumerable<Task> GetAllTasks();
        Task GetTaskById(int id);
        void AddTask(Task task);
        void UpdateTask(Task task);
        void DeleteTask(Task task);
        void SaveChanges();
    }
}

接下来,实现ITaskRepository接口。在Models文件夹中创建一个名为TaskRepository.cs的文件,并添加以下代码:

using System.Collections.Generic;
using System.Linq;
using YourNamespace.Models;

namespace YourNamespace.Repositories
{
    public class TaskRepository : ITaskRepository
    {
        private readonly ApplicationDbContext _context;

        public TaskRepository(ApplicationDbContext context)
        {
            _context = context;
        }

        public IEnumerable<Task> GetAllTasks()
        {
            return _context.Tasks.ToList();
        }

        public Task GetTaskById(int id)
        {
            return _context.Tasks.Find(id);
        }

        public void AddTask(Task task)
        {
            _context.Tasks.Add(task);
        }

        public void UpdateTask(Task task)
        {
            _context.Tasks.Attach(task);
            _context.Entry(task).State = EntityState.Modified;
        }

        public void DeleteTask(Task task)
        {
            _context.Tasks.Remove(task);
        }

        public void SaveChanges()
        {
            _context.SaveChanges();
        }
    }
}
  1. 创建数据库上下文(DbContext):在Models文件夹中创建一个名为ApplicationDbContext.cs的文件,继承自IdentityDbContext,并配置连接字符串。添加以下代码:
using Microsoft.AspNet.Identity.EntityFramework;
using YourNamespace.Models;

namespace YourNamespace.Models
{
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("name=DefaultConnection", throwOnMissingConnectionString: false)
        {
        }

        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
}
  1. 配置依赖注入(Dependency Injection):在Startup.cs文件中配置依赖注入,将TaskRepository注入到TasksController中。修改ConfigureServices方法如下:
public void ConfigureServices(IServiceCollection services)
{
    // ...

    services.AddScoped<ITaskRepository, TaskRepository>();

    // ...
}
  1. 创建视图(View):在Views文件夹中创建一个名为Tasks的文件夹,并在其中创建以下视图文件:
  1. 配置路由(Route):在App_Start文件夹中的RouteConfig.cs文件中配置路由,将任务相关的请求映射到TasksController。修改RegisterRoutes方法如下:
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

现在,你已经创建了一个基本的C# MVC任务管理应用程序。你可以根据需要添加更多功能,如用户身份验证、任务状态更改(未完成/已完成)等。

推荐阅读:
  1. 怎么在java中利用多线程执行多个程序
  2. 利用java代码实现委派模式

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:C# MVC框架如何实现邮件发送

下一篇:C# MVC框架中如何实现前端交互

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》