저는 EF Code First를 사용하고 있습니다. 여기서는 Professor 객체를 참조하는 클래스입니다.새로 생성 된 개체를 저장하십시오. ASP.NET MVC
public class Mark
{
public int MarkId { get; set; }
[Required(ErrorMessage = "Please provide Grade")]
[Display(Name = "Grade Value")]
public int MarkValue { get; set; }
[Required(ErrorMessage = "Please provide grade type")]
[Display(Name = "Grade Type")]
public string Type { get; set; }
[Required(ErrorMessage = "Please provide Subject")]
[Display(Name = "Subject")]
public virtual Subject Subject { get; set; }
public virtual User User { get; set; }
public virtual Professor Professor { get; set; }
}
내 견해로는 마크를 넣은 교수를 선택하는 드롭 다운 메뉴가 있습니다. 나는 이런 식으로 구현 :
//controller
public MarksController() : this(new MarkRepository())
{
IProfessorRepository professorsRepo = new ProfessorRepository();
List<Professor> professors = professorsRepo.All.ToList<Professor>();
List<SelectListItem> items = new List<SelectListItem>();
foreach (Professor p in professors)
{
items.Add(new SelectListItem
{
Text = String.Concat(p.FirstName, " ", p.LastName), Value = p.ProfessorId.ToString()
});
}
items.Add(new SelectListItem
{
Text = "Please select Professor", Value = "0", Selected = true
});
ViewBag.Professors = items;
}
//view create or edit
<div class="editor-label">
@Html.LabelFor(model => model.MarkValue)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MarkValue)
@Html.ValidationMessageFor(model => model.MarkValue)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Type)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Type)
@Html.ValidationMessageFor(model => model.Type)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Professor)
</div>
<div class="editor-field">
@Html.DropDownList("Professors");
</div>
예, 나는 컨트롤러에서 metod이 저장소 방법 InsertOrUpdate을 호소하는 만들기라는 것입니다 있다는 것을 알고있다.
[HttpPost]
public ActionResult Create(Mark mark)
{
if (ModelState.IsValid) {
markRepository.InsertOrUpdate(mark);
markRepository.Save();
return RedirectToAction("Index");
} else {
return View();
}
}
public void InsertOrUpdate(Mark mark)
{
if (mark.MarkId == default(int)) {
// New entity
context.Marks.Add(mark);
} else {
// Existing entity
context.Entry(mark).State = EntityState.Modified;
}
}
모든 것이 논리적으로 보이지만 교수가 선택된 상태에서 새로 생성 된 마크 객체를 어떻게 저장할 수 있습니까? ASP.NET은 Controller에서 Create 메서드에 전달 된 개체를 어떻게 정렬합니까? 선생님과 내가 선택한 마크를 어떻게 일치시켜야합니까?
이 한 번 봐 할, 당신은 모델에 ProfessorID이 필요합니다. http://stackoverflow.com/questions/5141714/model-binding-dropdown-selected-value –