私のasp.netプロジェクトの間にあり、非常に基本的なことに固執しますが、悲しいことにオンラインブログから多くの助けを得ることはできませんでした。複数のテーブルのデータ入力フォームmvc
私は4つのテーブルを持っていた学生、コース、部、応用。私は学生がオンラインでコースに申し込むためのフォームをデザインしています。
生徒は名前、姓、連絡先など のようなすべての個人的な詳細を入力します。その後、ドロップダウンリストから学生がDepartmentを選択します。科目の選択に応じて、コースのドロップダウンリストの中に表示されます。
このフォームに入力したデータは保存できません。私はこれらのドロップダウンリストで何か間違っています。私がドロップダウンリストから部署を選択するときに学生の個人情報を記入した後、個人情報はすべて消去されます。以下は私のコードです。
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クラス:
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");
}
}
ビューコーディング:
@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>
エラーは、ビューの剃刀/ HTMLコードにある可能性が高いので投稿することができれば助かります – ADyson
ビューコードも今投稿されています –
質問を編集する必要があります。答えとして投稿しないでください:-)しかし、私は一見を持っています – ADyson