I'm new to MVC, so maybe this is a stupid question - I'm trying to get my head around strongly typed views in asp.net mvc. I'm working on version 3. If I have a project with 2 models - say Person and Department. A person must belong to a department. So I have my Department model (and I've generated my controller and CRUD interface):
public class Department
{
public int Id { get; set;}
public string DeparmentName { get; set;}
}
Then I have a Person model which references Department:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Department_Id { get; set; }
[ForeignKey("Department_Id")
public virtual Department Department { get; set;}
}
Now I generate my Controller and Views. Now, when I look into the PersonController, I have the following for the Create:
public ActionResult Create()
{
ViewBag.Department_Id = new SelectList(db.Deparments, "Id", "DepartmentName");
return View();
}
and in Person\Create.cshtml, the code to create the Department drop down is
@Html.DropDownList("Department_Id", String.Empty)
As I understand it, the DropDownList Html helper is using the ViewBag to create my drop down list. However, FirstName and LastName seem to have their input fields created without relying on the ViewBag - so in my View, I can have compile time checking on my FirstName and LastName fields because my view is strongly typed, but not on my DropDownList.
Is there a reason why the DropDownList for department not strongly typed or am I doing something wrong and there is a way to make it strongly typed?
Thanks :)