Как отобразить данные из двух разных таблиц в одном представлении - PullRequest
1 голос
/ 27 февраля 2012

Я создаю форум, где пользователь может задавать вопросы и комментировать его .... используя mvc3

Внутри этого у меня есть ссылка "детали" для каждого вопроса .... в той части, что у меня есть еще 2 ссылки "показать" и "добавить комментарии" В шоу можно увидеть все комментарии, связанные с конкретным вопросом

и в поле Добавить комментарии мы можем добавить комментарий к конкретному вопросу. его код контроллера следующий:

   public ActionResult Addnew(int id)
    {
              return View();
    }
    [HttpPost]
    public ActionResult Addnew(Answer answr, int id)
    {
        answr.QuestionQId = id;
        _db.Answers.Add(answr);
        _db.SaveChanges();
        return RedirectToAction("Index");
    }

и я написал:

@model Hobby.Models.Answer

@{
  ViewBag.Title = "Addnew";
}

<h2>Addnew</h2>

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

        @using (Html.BeginForm()) {
         @Html.ValidationSummary(true)
             <fieldset>
             <legend>Answer</legend>
            <div class="display-label">Question</div>
             <div class="display-field">
           @Html.DisplayFor(model => model.Question.Que)
         </div>

             <div class="editor-label">
                @Html.LabelFor(model => model.Ans)
            </div>
            <div class="editor-field">
                  @Html.EditorFor(model => model.Ans)
                    @Html.ValidationMessageFor(model => model.Ans)
            </div>
              <p>
                 <input type="submit" value="Add Comment" />
               </p>
            </fieldset>
        }
  <div>
   @Html.ActionLink("Back to List", "Index")
 </div>

но он не показывает Вопрос из таблицы вопросов ..... Пожалуйста, помогите мне

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Я не вижу, где вы связываете необходимые данные. Я думаю, что метод AddNew [Get] должен получить вопрос из БД и задать его для представления. Я полагаю, вы должны сделать что-то похожее на это

public ActionResult Addnew(int id)
    {
              Answer ans = new Answer();
              ans.Question = _db.Questions.SingleOrDefault(q => q.Id == id);
              return View(ans);
    }
0 голосов
/ 27 февраля 2012

@ Джаянга прав, но я думаю, что вы все еще хотели показать данные из "2 таблиц", как вы указали в заголовке вашего вопроса.Предполагая, что вы хотите показать вопрос и все связанные с ним ответы, а также предполагая, что это .NET Entity Framework (не знаю наизусть синтаксис Linq2Sql), вы сделаете:

public ActionResult Addnew(int id)
{
    var question = _db.Questions.Include("Answers").SingleOrDefault(q => q.Id == id);
    return View(question);
}

Это изменяет тип вашей модели привязки на Вопрос, но я предполагаю, что Вопрос может иметь более одного ответа, и в этом случае вы будете иметь в своем Просмотре всю необходимую информацию ... что-то вроде этого:

// In your .cshtml file
<article class="question">@Model.Que</article> @* this is your question text *@
@foreach (var answer in Model.Answers.OrderBy(a => a.PostedDate)) { @* assuming you want to sort this *@
    <article class="answer">@answer.Ans</article> @* this would be your answer text *@
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...