Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

C# ASP.NET MVC Forms Creating a Basic Form Adding a POST Action Method

I have stared at this long enough, I am going to ask for direction.

Challenge Task 1 of 1

In IssuesController.cs add another action method named Report to handle HTTP posts from the form in the Report.cshtml view.

I have added comments to what I though should solve the issue. But I am clearly missing something. Suggestions, reading assignments?

IssuesController.cs
using System.Web.Mvc;

namespace IssueReporter.Controllers
{
    public class IssuesController : Controller
    {
        public ActionResult Report()
        {
            return View();
        }
    [ActionName("Report")] 
    // Decorate the action method with an attribute so that MVC will only route POST requests to it.
        [HttpPost]
        public ActionResult ReportSubmit(
           // Add a total of six parameters that match the form field names in the Report.cshtml view file in order to capture posted values from the form. Remember to change the first letter of each form field to lowercase (i.e. "Name" to "name").
           // Use the string data type for each parameter.

           string name, string email, string departmentId, string severity, string reproducible, string descriptionOfProblem)
        {
            // For now, in the action method, just return a call to the View method.

            return View();
        }
    }
}
Report.cshtml
@{
    ViewBag.Title = "Report an Issue";
}

<h2>@ViewBag.Title</h2>

<form method="post">

    <div>
        <label for="Name">Name</label>
        <input type="text" id="Name" name="Name" />
    </div>

    <div>
        <label for="Email">Email</label>
        <input type="text" id="Email" name="Email" />
    </div>

    <div>
        <label for="DepartmentId">Department</label>
        <input type="text" id="DepartmentId" name="DepartmentId" />
    </div>

    <div>
        <label for="Severity">Severity</label>
        <input type="text" id="Severity" name="Severity" />
    </div>

    <div>
        <label for="Reproducible">Reproducible</label>
        <input type="text" id="Reproducible" name="Reproducible" />
    </div>

    <div>
        <label for="DescriptionOfProblem">Description of Problem</label>
        <textarea id="DescriptionOfProblem" name="DescriptionOfProblem"></textarea>
    </div>

    <button type="submit">Save</button>

</form>

2 Answers

Steven Parker
Steven Parker
230,232 Points

You are sooooo close!

First of all, what's up with the "[ActionName("Report")]"? The challenge didn't ask for anything like that.

But then, the challenge did ask you to "add another action method named Report", but you named yours "ReportSubmit" instead.

Hey Steven, I just finished this challenge thanks to your above hints.

So, I can use two of the same ActionResult's with the same name, as long as I also declare an attribute above one? Using the same exact name through me off at first.

Steven Parker
Steven Parker
230,232 Points

This is called "method overloading". They have the same name but different "signatures" because of the arguments.