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 trialSachini Hansini Nawalaella
2,842 PointsASP.NET MVC forms
In IssuesController.cs complete the server-side validation rule that enforces if the issue severity is "Critical" that the Issue.Email property is not null or empty. The conditional logic for this validation rule has already been added to the Report POST action method. Add a call to the ModelState.AddModelError method where the TODO comment is located. Pass in the string "Email" for the key parameter value and the string "The Email field is required for critical issues." for the errorMessage parameter.
I DONT UNDERSTAND THE QUESTION>>>PLEASE HELP ME
using System.Web.Mvc;
using IssueReporter.Data;
using IssueReporter.Models;
namespace IssueReporter.Controllers
{
public class IssuesController : Controller
{
private IssuesRepository _issuesRepository;
public IssuesController()
{
_issuesRepository = new IssuesRepository();
}
public ActionResult Index()
{
return View();
}
public ActionResult Report()
{
var issue = new Issue();
SetupDepartmentsSelectListItems();
return View(issue);
}
[HttpPost]
public ActionResult Report(Issue issue)
{
if (issue.Severity == Issue.SeverityLevel.Critical && string.IsNullOrEmpty(issue.Email))
{
if(ModelState.IsNullOrEmpty("Email") && issue.Email <=0)
{
ModelState.AddModelError("The Email field is required for critical issues.");
}
}
if (ModelState.IsValid)
{
_issuesRepository.AddIssue(issue);
return RedirectToAction("Index");
}
SetupDepartmentsSelectListItems();
return View(issue);
}
private void SetupDepartmentsSelectListItems()
{
ViewBag.DepartmentsSelectListItems = new SelectList(
Data.Data.Departments, "Id", "Name");
}
}
}
2 Answers
Steven Parker
231,269 PointsYou're working to hard.
You apparently missed where the instructions said, "The conditional logic for this validation rule has already been added to the Report POST action method." So you don't need that if statement at all.
But when you call ModelState.AddModelError, remember that it takes two arguments. So be sure to provide both.
Steven Hughes
17,974 PointsWhat was stated above was actually a very good hint in fact it worked for me. What this exercise is try to teach is how to target the field. At least that was the way I read it. I hope this helps anyone looking at it.
if (issue.Severity == Issue.SeverityLevel.Critical && string.IsNullOrEmpty(issue.Email)) <----provided code
{
// TODO Use the ModelState.AddModelError method to add an error message for the "Email" field.
ModelState.AddModelError("Email", "The Email field is required for critical issues.");
//"Email" is called from issue.Email but because it is a string you can target it
//with "Email"
}