즉, 외래 키를 통해 내 클래스의 "계층 적 트리"를 트래버스 할 수 있습니까?MVC에서 외래 키를 사용하여 여러 클래스/테이블을 이동하려면 어떻게해야합니까?
다음은 트리 및 연관의 그림입니다.
나는 각각 내보기에서 테이블을 통해 루프합니다. 설문 조사 데이터와 카테고리 데이터는 쿼리 문자열에서 PK와 FK SurveyID를 참조 할 수 있기 때문에 쉽게 표시 할 수 있습니다. 그 시점을 지나서 CategoryID에서 SurveyID로 연결을 얻는 방법을 모르겠습니다. 여기
내보기@using (Html.BeginForm("Save", "Surveys"))
{
<div class="form-group">
@Html.LabelFor(m => m.SurveyId)
@Html.TextBoxFor(m => m.Description, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Description)
</div>
<div class="form-group">
@for (int i = 0; i < Model.Categories.Count; i++)
{
<ul>@Html.TextBoxFor(m => m.Categories[i].Description, new { @class = "form-control" })</ul>
@Html.HiddenFor(m => m.Categories[i].CategoryId)
@*Here is where I attempted to loop the questions based on category*@
@*@for (int j = 0; j < Model.Categories[i].Questions.Count(); j++)*@
{
@Html.TextBoxFor(m => m.Questions[j].QuestionText)
}
}
</div>
@Html.HiddenFor(m => m.User.Id)
@Html.HiddenFor(m => m.SurveyId)
@Html.AntiForgeryToken()
<button type="submit" class="btn btn-primary">Save</button>
}
I가 사용하여 시도이다 (INT의 J = 0; j를 < Model.Questions.Count(); J ++)
하지만 아무것도 와서 내가 가진 그것은 상관없이 일하지 않는다는 느낌.
내 생각에 문제는보기 내에 있지 않지만 컨트롤러 내에서 데이터를 가져 오는 방식에 있습니다. I는이 방법 또는 무엇을 포함 사용하기로되어있어 경우 여기
public ActionResult Edit(int id)
{
var survey = _context.Surveys.SingleOrDefault(c => c.SurveyId == id);
var categories = new List<Category>();
categories = _context.Categories.Where(c => c.SurveyId == id).ToList();
var questions = new List<Question>();
//questions = _context.Questions.Include()
//var questions = new List<Question>();
//questions = _context.Categories.Include(c => c.SurveyId == id).ToList();
if (survey == null)
return HttpNotFound();
var viewModel = new NewSurveyViewModel(survey)
{
Questions = questions,
Categories = categories
};
return View("SurveyForm", viewModel);
}
는 잘 모르겠지만, 난 종류와 설문 조사 ID의 사이의 관계를 해소하는 방법을 생각하고 거기에서 갈 수 없어 QuestionID를 사용합니다.
비교적 가까이 있습니까?
더 빠른 것입니다. Entity Framework를 사용하는 경우 개체를로드하는 방법은 https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx를 참조하십시오. – JamieSee
데이터가 왜 표시되지 않는지에 대한 열망적인로드가 있었지만 이제는 각 카테고리의 각 카테고리에 대한 모든 질문이 표시됩니다. – Nick
우리가 올바른 길을 걷고있는 것처럼 보였으므로 대답으로 바뀌 었습니다. 업데이트가 필요한지 알려주세요. – JamieSee