I'm new to MVC, so maybe this is a stupid question - I'm trying to figure out strongly typed views in asp.net mvc. I am working on version 3. If I have a project with two models - say “Person” and “Department”. A person must belong to a department. So, I have a model of my department (and I created my controller and CRUD interface):
public class Department { public int Id { get; set;} public string DeparmentName { get; set;} }
Then I have a Person model that references the 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 create my controller and views. Now when I look in PersonController, I have the following for Create:
public ActionResult Create() { ViewBag.Department_Id = new SelectList(db.Deparments, "Id", "DepartmentName"); return View(); }
and in Person \ Create.cshtml the code for creating a drop-down section is
@Html.DropDownList("Department_Id", String.Empty)
As I understand it, the DropDownList Html helper uses the ViewBag to create my drop-down list. However, FirstName and LastName have their own input fields created without using the ViewBag - so in my view I can check the compilation time in the FirstName and LastName fields because my view is strongly typed, but not on my DropDownList.
Is there a reason why the DropDownList for the department didn’t dial strongly or am I doing something wrong and is there a way to make it strongly typed?
Thanks:)
source share