내 데이터베이스에 Review라는 테이블이 있고 Entity Framework를 사용하여 읽기/쓰기 작업 및보기로 ReviewController를 만들었습니다. 그래서 모든 스캐 폴드 코드입니다.양식에서 외래 키 값을 숨기는 방법
이것은 내 편집 페이지입니다.
@model UniversityApp.Models.Review
@{
ViewBag.Title = "Edit";
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Review</legend>
@Html.HiddenFor(model => model.ReviewID)
<div class="editor-label">
@Html.LabelFor(model => model.MovieID, "Movie")
</div>
<div class="editor-field">
@Html.DropDownList("MovieID", String.Empty)
@Html.ValidationMessageFor(model => model.MovieID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.UserID, "User")
</div>
<div class="editor-field">
@Html.DropDownList("UserID", String.Empty)
@Html.ValidationMessageFor(model => model.UserID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Rating)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Rating)
@Html.ValidationMessageFor(model => model.Rating)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
스캐 폴딩 메커니즘에서 볼 수 있듯이 외부 값 키에 대한 편집기가 추가되었습니다. 이미 사용자가 직접 검토 한 후에 사용자 ID 나 영화 ID를 수동으로 변경할 수 없도록하기 위해이 코드를 제거했습니다. 해당 기본 키 값이 존재하지 않기 때문에 외부 키 값을 삽입 할 수 없습니다
:하지만 편집 검토 항목에 나는 데이터베이스 SaveChanges를()에이 오류가 발생합니다. [외래 키 제약 이름 = Review_User]
이전 사용자 ID 및 영화 ID 값을 보존하려면 내 수정 작업을 어떻게해야합니까?
여기 ReviewController에서 편집 작업에 대한 코드입니다 :
public ActionResult Edit(int id)
{
Review review = db.Reviews.Find(id);
ViewBag.MovieID = new SelectList(db.Movies, "MovieID", "Title", review.MovieID);
ViewBag.UserID = new SelectList(db.Users, "UserID", "UserName", review.UserID);
return View(review);
}
[HttpPost]
public ActionResult Edit(Review review)
{
if (ModelState.IsValid)
{
db.Entry(review).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.MovieID = new SelectList(db.Movies, "MovieID", "Title", review.MovieID);
ViewBag.UserID = new SelectList(db.Users, "UserID", "UserName", review.UserID);
return View(review);
}
편집 : 나는 방법 설명 시도,하지만 난 여전히 문제가 발생하고
. 이제 얻을 수있는 오류 메시지는 다음과 같습니다. 참조 무결성 제약 조건 위반이 발생했습니다. 참조 제약 조건을 정의하는 속성 값이 관계의 주체 및 종속 개체간에 일치하지 않습니다. 내가 뭘 잘못하고 있는지 모르겠다. 이 오류는 코드 줄에 trigered된다
db.Entry(review).State = EntityState.Modified;
우리의 솔루션으로 인해 도움을받을 수 있습니까? 안녕하세요 –
질문이 업데이트되었습니다. – Anajrob
새로운 문제입니다. 새로운 오류 –