I am in between my asp.net project and get stuck on very basic thing but sadly could not get much help from online blogs.
I got 4 tables Student, Course, Department, Applied. I am designing a form for students to apply for course online.
Student will put all his personal detail like name, surname, contact details etc after that from a dropdown list student will select Department. According to the selection of Department purticular courses will be shown inside course dropdown list.
i am not able to save data entered in this form. i am doing something wrong with these drop down list. After filling in student personal details when i choose the department from drop down list all the personal details wiped out. Following is my code.
public class Student
{
    public int StudentID { get; set; }        
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
    public string Address { get; set; }
    public double PhoneNumber { get; set; }
    public string Email { get; set; }
    public DateTime AppliedDate { get; set; }
    public virtual ICollection<Applied> Applications { get; set; }
}
public class Course
{
    public int CourseID { get; set; }       //PK
    public int DepartmentID { get; set; }   //FK
    public string CourseName { get; set; }
    public string CoursCode { get; set; }
    public int NfqLevel { get; set; }
    public int CreditHrs { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime FinishDate { get; set; }
    public virtual Department Department { get; set; }
    public virtual ICollection<Applied> Applications { get; set; }       
}
public class Department
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int DepartmentID { get; set; }       //PK
    public string DpName { get; set; }
    public virtual ICollection<Course> Courses { get; set; }
}
public enum Status { Applied, Approved, Rejected }
public class Applied
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int AppliedID { get; set; }
    public int StudentID { get; set; }      //FK
    public int CourseID { get; set; }       //FK
    public Status? ApplicationStatus { get; set; }
    public virtual Student Student { get; set; }
    public virtual Course Course { get; set; }
    public virtual Enrolment Enrolment { get; set; }
}
public class Enrolment
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int EnrolmentID { get; set; }        //PK
    public int AppliedID { get; set; }          //FK
    public int TotalFee { get; set; }
    public int FeeReceived { get; set; }
    public int BalFee { get; set; }
    public virtual Applied Application { get; set; }
}
ViewModel Class:
public class Application2
{
    public int StudentID { get; set; }       
    public string FirstName { get; set; }
    public string LastName { get; set; }
    [DataType(DataType.Date)]
    public DateTime DateOfBirth { get; set; }
    public string Address { get; set; }
    [DataType(DataType.PhoneNumber)]
    public double PhoneNumber { get; set; }
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }
    [DataType(DataType.Date)]
    public DateTime AppliedDate { get; set; }
    public int AppliedID { get; set; }
    public int CourseID { get; set; }       
    public string CourseName { get; set; }
    public string DpName { get; set; }
}
public class ApplicationController : Controller
{
    private RegistrarsContext db = new RegistrarsContext();
    //GET: StudentApplication
    public ActionResult Index(int? SelectedDepartment, int? SelectedCourse)
    {
        {
            var departments = db.Departments.OrderBy(q => q.DpName).ToList();
            ViewBag.SelectedDepartment = new SelectList(departments, "DepartmentID", "DpName", SelectedDepartment); 
            int departmentID = SelectedDepartment.GetValueOrDefault();
            IQueryable<Course> courses = db.Courses
                .Where(c => !SelectedDepartment.HasValue || c.DepartmentID == departmentID)
                .OrderBy(d => d.CourseID)
                .Include(d => d.Department);
            ViewBag.SelectedCourse = new SelectList(courses, "CourseID", "CourseName");
        }
        return View();
    }
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Application2 application)
    {
       var student = new Student {StudentID=application.StudentID, FirstName=application.FirstName, LastName=application.LastName, DateOfBirth=application.DateOfBirth, Address=application.Address, PhoneNumber=application.PhoneNumber, Email=application.Email };
            var apply = new Applied {AppliedID=application.AppliedID, CourseID=application.CourseID, StudentID=application.StudentID  };
        using (var db = new RegistrarsContext())
        {
            db.Students.Add(student);
            db.Applied.Add(apply);
            db.SaveChanges();
            return View("Index");
        }
    }
View Coding:
@model StudentsRegistration.ViewModels.Application
@{
    ViewBag.Title = "Student Appication";
}
<h2>Student Application Form</h2>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <div class="form-horizontal">
        <h4>Student Details </h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.StudentID, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.StudentID, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.StudentID, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.FirstName)
                @Html.ValidationMessageFor(model => model.StudentID)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.LastName)
                @Html.ValidationMessageFor(model => model.LastName)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.DateOfBirth, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.DateOfBirth)
                @Html.ValidationMessageFor(model => model.DateOfBirth)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Address)
                @Html.ValidationMessageFor(model => model.Address)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.PhoneNumber, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.PhoneNumber)
                @Html.ValidationMessageFor(model => model.PhoneNumber)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Email)
                @Html.ValidationMessageFor(model => model.Email)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.AppliedDate, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.AppliedDate)
                @Html.ValidationMessageFor(model => model.AppliedDate)
            </div>
        </div>
        <br>
        <br>
        <div class="form-group" ,>
            Select Department:
            @Html.DropDownList("SelectedDepartment", "Select Department")
            <input type="submit" value="Select" />
        </div>
        <div class="form-group">
            Select Course:
            @Html.DropDownList("SelectedCourse", "Select Course")
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Submit" class="btn btn-default" />
            </div>
        </div>
    </div>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
 
     
     
    