コード例 #1
0
        public async Task <IActionResult> Create([Bind("Id,CourseId,DisplayName,UrlName")] CourseUnit courseUnit)
        {
            if (ModelState.IsValid)
            {
                // url address
                if (String.IsNullOrEmpty(courseUnit.UrlName))
                {
                    // leave all
                    courseUnit.UrlName = courseUnit.DisplayName.ConvertToUrlName();
                    if (courseUnit.UrlName.Length < 4) // error if too small
                    {
                        ModelState.AddModelError("UrlName", "Choose a url name which contains only numbers, digits, hyphen and underbar, or choose a course name with more english chars.");
                        return(View(courseUnit));
                    }
                }
                // put the unit as last in the course
                courseUnit.InCourseOrder = await _context.Units.Where(u => u.CourseId == courseUnit.CourseId).MaxAsync(u => u.InCourseOrder) + 1;

                _context.Add(courseUnit);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CourseId"] = new SelectList(_context.Courses, "Id", "DisplayName", courseUnit.CourseId);
            return(View(courseUnit));
        }
コード例 #2
0
        private async Task <CoursePage> GetPage(string course, string unit, string page)
        {
            if (String.IsNullOrWhiteSpace(course))
            {
                return(null);
            }
            Course c = await _context.Courses.Include(c => c.Units)
                       .ThenInclude(u => u.Pages)
                       .FirstOrDefaultAsync(c => c.UrlName == course);

            if (c == null)
            {
                return(null);
            }
            c = c.SortUnitsAndPages();

            // if no unit url name specified, get first page of first unit
            if (String.IsNullOrWhiteSpace(unit))
            {
                return(c.Units.ElementAt(0).Pages.ElementAt(0));
            }
            CourseUnit u = c.Units.FirstOrDefault(u => u.UrlName == unit);

            if (u == null)
            {
                return(null);
            }
            // if no page url name, return first page
            if (String.IsNullOrWhiteSpace(page))
            {
                return(u.Pages.ElementAt(0));
            }

            return(u.Pages.FirstOrDefault(p => p.UrlName == page));
        }
コード例 #3
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,CourseId,DisplayName,InCourseOrder,UrlName")] CourseUnit courseUnit)
        {
            if (id != courseUnit.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    // url address
                    if (String.IsNullOrEmpty(courseUnit.UrlName))
                    {
                        // leave all
                        courseUnit.UrlName = courseUnit.DisplayName.ConvertToUrlName();
                        if (courseUnit.UrlName.Length < 4) // error if too small
                        {
                            ModelState.AddModelError("UrlName", "Choose a url name which contains only numbers, digits, hyphen and underbar, or choose a course name with more english chars.");
                            return(View(courseUnit));
                        }
                    }
                    _context.Update(courseUnit);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CourseUnitExists(courseUnit.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CourseId"] = new SelectList(_context.Courses, "Id", "Description", courseUnit.CourseId);
            return(View(courseUnit));
        }