Отображение данных из списка в бритву - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу показать все значения моего списка (строки) в виде бритвы, но без использования метода "foreach".

Я получил это, но единственное, что осталось показать, это List<Answer>.

   @Model PoolManager.Models.Question
 @{
ViewData["Title"] = "Details";
}
<h2>Details</h2>
<table class="table">
<thead>
    <tr class="bg-primary">
        <th>Question</th>
        <th>Answers</th>
        <th>Starting Date</th>
        <th>Ending Date</th>
        <th>Active</th>
        <th>Details</th>
        <th>Edit</th>
        <th>Delete</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td class="bg-info">@Model.Text</td>
        @for (int i = 0; i < Model.Answers.Count; i++)
        {
            String Resposta = Model.Answers[i].ToString();
            <td class="bg-info" @Resposta></td>
        }

        <td class="bg-info">@Model.StartDate</td>
        <td class="bg-info">@Model.EndDate</td>
        <td>
            <a asp-action="Edit" asp-route-id="@Model">Edit</a> |
            <a asp-action="Details" asp-route-id="@Model.Id">Details</a> |
            <a asp-action="Delete" asp-route-id="@Model.Id">Delete</a>
        </td>
    </tr>
</tbody>

У меня есть это до сих пор, но он только подсчитывает количество ответов, но мне нужно вывести ответ, а не его идентификатор.

  @for (int i = Model.Answers.Count; i >= 0; i--)
  {          
      String Resposta = Model.Answers.ToString();

      <td class="bg-info" @Resposta></td>
  }

Вывод, который я получаю:

system.collections.generic.list`1 [poolmanager.models.answer]

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

Внутри цикла for вы можете получить значение для каждого ответа в списке, используя индекс. Например:

 @for (int i = Model.Answers.Count; i >= 0; i--)
    {
        string Resposta = Model.Answers[i].ToString();
        <td class="bg-info">@Resposta</td>
    }

Приведенный выше код поможет вам получить значение, хранящееся в каждом индексе, используя сам цикл for.

0 голосов
/ 24 апреля 2018

Прежде всего вы должны исправить раздел таблицы, теперь выглядит плохо.

Во-вторых, вы не можете использовать таблицу, если хотите показать только 1 элемент, это чепуха.

В-третьих; В вашем контроллере

ActionResult MyPage(){}

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

public ActionResult MyPage(){

     List<PoolManager.Models.Question> questionList = dbModel.Questions.ToList();

     TempData['answerList'] = dbModel.Answers/*.Where(//IF YOU WANT A WHERE CLAUSE YOU CAN WRITE HERE AS WELL)*/.ToList();
     //We just sent List<Answers> inside that TempData["answerList"], we will cast it in RazorPage later.

     return View(questionList);
}

И после этого вы должны использовать

@model List<PoolManager.Models.Question>

вверху вашей страницы Razor. Потому что мы отправляем список PoolManager.Models.Question объектов. И здесь я предполагаю, что вы используете Bootstrap Modal. Если нет, вы можете использовать это как div внутри каждой ячейки ответа и другую таблицу в этих div. Давайте посмотрим на мой путь:

<table class="table">
    <thead>
        <tr class="bg-primary">
            <th>Question</th>
            <th>Answers</th>
            <th>Starting Date</th>
            <th>Ending Date</th>
            <th>Active</th>
            <th>BUTTON LINKS</th>
        </tr>
    </thead>
    <tbody>
        @foreach(var question in Model)
        {
        <tr>
            <td class="bg-info">@question.Text</td>
            <td class="bg-info">
                <a href="#" class="btn btn-primary" data-target="#myModalId_@question.questionId" data-toggle="modal">Answers</a>
            </td>
            <td class="bg-info">@question.StartDate</td>
            <td class="bg-info">@question.EndDate</td>
            <td></td>
            <td>
            <a asp-action="Edit" asp-route-id="@question">Edit</a> |
            <a asp-action="Details" asp-route-id="@question.Id">Details</a> | 
            <a asp-action="Delete" asp-route-id="@question.Id">Delete</a>
            </td>
        </tr>
        }
    </tbody>
</table>

Мы только что закончили раздел таблицы, давайте заполним модалы. Вам необходимо привести TempData ["answerList"] к классу List, который мы описали в Controller ранее.

@foreach(var question in Model)
{
    <div class="modal fade" id="myModalId_@question.questionId" tabindex="-1" role="dialog" aria-labelledby="myModalId_@question.questionId">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="myModalId_@question.questionId">Looking at @question.Text 's answers</h4>
                </div>
                <div class="modal-body">
                    @foreach(var answer in ((List<Answers>)TempData["answerList"]).ToList() )
                    {
                        <div class="row">
                            @answer.Text
                        </div>
                    }
                </div>
            </div>
        </div>
    </div>
}

Надеюсь, это вам очень поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...