Conestoga College - ACSIT - BCS Program
Enterprise Application Development (PROG73020) - quiz #1
Worth 4% of final course grade (4 marks total)
Due: Midnight on Jan 17 (Section 1) or Jan 19 (Section 2), 2024
Peer grading & feedback due midnight of the next night
Introduction
The goals of this quiz are for you to:
●Define a controller and an action on the controller that passes data to a view that displays the content dynamically using Razor syntax.
●Define business logic in a separate service class (and interface) to maintain its independence from the MVC infrastructure
What you need to do
To complete this quiz you need to do all of the following:
●Complete the task as described below
●Submit your solution (by midnight of the day of your quiz) as a single zip file to the eConestoga dropbox for the quiz so that ultimately I can associate a grade with it.
●Share your solution (again as a single zip file) with the student that has been randomly assigned to be your peer-grader and get theirs.
●Grade their solution, and provide feedback on it, to the student that you have been randomly assigned to grade. To do this you will use a Form as a means of submitting the grade and code review feedback to me. Please submit your grade and feedback by midnight of the day after the quiz.
○Remember: you only get the 4th mark on this if you properly grade your peer’s solution!
Peer-marking Details
First of all, please review the details of the peer-grading-rules document. It is available at the top level of the quizzes folder in eConestoga.
Also, I used a small Python program that randomly generated pairings for this quiz and the resulting Excel spreadsheet that provides these pairings is included in the eConestoga folder for this quiz. Please consult this spreadsheet to know who you are peer-grading and who is peer-grading your solution.
Finally, please use the Form linked to in the eConestoga folder for this quiz to submit your grade and feedback for the student you have been randomly assigned to grade.
Your Task
For this quiz you are to develop a simple ASP.NET Core MVC based page counting solution - i.e. a simple web app with at least 2 pages that keeps track of the number of times each of those pages has been viewed/visited.
To do this you will define your page counting (on a per page basis) in a separate service. Recall - the guiding example here is the version 6 hello world sample we worked through, i.e. "HelloWorldStringModelWithServiceVersion6"
Steps:
●Open the starting code solution
●Add a Services folder
●To that add an interface with 1 method called IncrementPageCount that:
○Takes the page name as a string argument
○Returns the current page visit count for that page
●Then add a class that implements that interface by maintaining page visit counts on a per page basis
○Hint: You will want to use a Dictionary keyed on strings representing the page's name mapped to int's representing the count for that page
○Also, we are not worrying here about persisting the page counts in a file or database - i.e. we are only maintaining in-memory page counts so they will be lost if the app restarts
●Then register your class and interface pair as a singleton service
●Update the Index.cshtml file for the app's home page to have a simple int as a model
●Then add a reference to the service interface as a private data field in the Home Controller and in the constructor accept one as an arg and simply assign it to the private field
●In the Home Controller's Index action use the private data field referencing the page counter service to increment that pages count by name, e.g. "Home", and pass the return value off to the view
●In the Home/Index view show the current visit count by reading the value from the model
●Then, add another page, say e.g. "OtherPage", by first adding a View of that name to the Views/Home folder and then an action method of that same name in the Home controller
●In the OtherPage view, also declare an int model and use that model's value to show that page's count as well.
●In that OtherPage action method, as with the Index action, use the service to both increment the page count and pass its current count off to the view
●Note: don't worry right now that these 2 pages are almost identical - later we'll learn ways to avoid repetitive code in pages.
●And finally, add links between the 2 pages - i.e. the Home page should have a link to the OtherPage and vice versa.
For your convenience I have created a video demonstrating a running solution so you get a clear picture of what you need to build and it is posted in the eConestoga quiz folder.
Grading
Grading of this quiz is a simple 0, 1, 2, or 3 and is and based on the following scale:
Grade Description
3 The solution builds and runs without errors and all 3 of the following criteria are met:
●There are 2 or more pages to the app.
●A visit to each page is correctly counted and displayed on a per page basis.
●The page counting is handled by a singleton service that is defined by a class in a Services namespace/folder in the project and implements an interface.
2 The solution builds and runs with some functionality present but at least 1 of the above criteria has not been met.
1 A poor or minimal solution was submitted. For instance, it might build and run but almost none of the functionality is present, or there might be some code provided but it either fails to build or runs with errors.
0 No solution submitted or no code attempted in the solution.
请加QQ:99515681 或邮箱:99515681@qq.com WX:codehelp