#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
возвращать число? Если это так, то это не так. Это возвращает aPage
. Предполагается, что на возвращаемом файле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. Просто попробуйте использовать этот метод, он просто импортирует частный класс ниже метода. В этом классе он просто выдает исключение «Не реализовано» и закрывает браузер.