Веб-страница предназначена для возврата ответа на основе числа, но всегда возвращает только нуль?

#c# #html #css #asp.net #asp.net-core

Вопрос:

Этот фрагмент кода предназначен для возврата числа на основе ответа, выполняемого в SQL Server. У нас уже есть заполненные ответы, однако веб-страница всегда возвращает значение null (0) только тогда, когда она должна вернуться, например (5).

Кто-нибудь может помочь?

 public IActionResult OnPost(IList<Selection> selections)
{
    selections = selections;
    byte j = 0;

    for (byte i = 0; i < selections.Count; i  )
    {
        if (selections[i].Answer != 80)
        {
            Selected[j] = selections[i].Answer;
            j  ;
        }
    }

    return Page();
}
 

Другая часть кода, которая помещает номер на страницу, указана ниже.

 <form method="POST">
    @{IList<Selection> selections = Model.Selections;}
    @foreach (var Que in Model.Questions)
    {
        <b>@Que.Text</b>
        <br />
        @for (byte i = 0; i < Model.Answers.Count; i  )
        {
            if (Que.ID == Model.Answers[i].QuestionID)
            {
                <div style="border: 1px solid black;">
                    <label asp-for="@selections[i].Answer">@Model.Answers[i].Text</label>

                    <input type="radio" value="@Model.Answers[i].ID" name="@Que.ID" asp-for="@selections[i].Answer" />
                </div>
            }
        }
        <br />
        <br />
        <br />
        <br />
    }
    <br />
    <input type="hidden" value="@selections" asp-for="@selections">
    <input type="submit" asp-route-selections="@selections" />
</form>
 

Комментарии:

1. Этот код возвращается Page() . Он ничего не делает с результатами своих вычислений. (Где это Selected вообще определено?) Где/как конкретно вы наблюдаете результат, который описываете? В стороне, эта линия совершенно бессмысленна: selections = selections;

2. Вы вообще отладили это? Что происходит, когда вы входите внутрь Page() ?

3. Он должен просто вернуть пустую веб-страницу. У меня есть настройка страницы .cshtml, на которую она должна вернуться.

4.Добро пожаловать в Stack Overflow. Что вы на самом деле пытаетесь здесь сделать? Вы говорите, что «страница предназначена для возврата числа» в вопросе и «она должна возвращать пустую веб-страницу» в одном из ваших комментариев. Это 2 разные вещи. Должен ли метод OnPost возвращать число? Если это так, то это не так. Это возвращает a Page . Предполагается, что на возвращаемом файле Page где-то должен быть указан номер? Ну как же так, Page ведь никогда не говорят, каким должно быть число. Я думаю, вам нужно сделать шаг назад и подумать о том, чего вы пытаетесь достичь здесь.

5. Я опубликую больше завтра, так как я не на своем компьютере. У меня есть страница, выводящая номер, но она всегда возвращает 0 или null. Должен ли я разместить код на странице?

Ответ №1:

Вы возвращаете страницу(). Вы должны возвращать значение, которое вы хотите, завернутое в IActionResult

 public IActionResult OnPost(IList<Selection> selections)
{
     byte j = 0;
     for (byte i = 0; i < selections.Count; i  )
     {
          if (selections[i].Answer != 80)
          {
               Selected[j] = selections[i].Answer;
               j  ;
          }
     }

     return Ok(Selected);
}
 

Комментарии:

1. Я попробовал этот метод. Visual Stuido жалуется на раздел «Ок».

2. В чем ошибка?

3. docs.microsoft.com/en-us/dotnet/csharp/language-reference/…

4. Возможно, вам потребуется импортировать соответствующие пакеты. Попробуйте нажать на ошибку и нажмите Ctrl . , чтобы открыть небольшое окно с возможным разрешением в нем. Затем просто нажмите enter.

5. Просто попробуйте использовать этот метод, он просто импортирует частный класс ниже метода. В этом классе он просто выдает исключение «Не реализовано» и закрывает браузер.