【问题标题】:Web page is meant to return a number based an answer but only ever returns null?网页旨在返回基于答案的数字,但只返回空值?
【发布时间】:2021-11-11 19:13:41
【问题描述】:

这段代码旨在根据 SQL Server 中运行的答案返回一个数字。我们已经填充了答案,但是网页只在应该返回例如 (5) 时才返回 null (0)。

谁能帮忙?

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>

【问题讨论】:

  • 此代码返回Page()。它不会对其计算结果做任何事情。 (Selected 甚至在哪里定义?)您在哪里/如何具体观察您描述的结果?顺便说一句,这条线完全没有意义:selections = selections;
  • 你调试过这个吗?当你进入Page() 时会发生什么?
  • 它应该只返回一个空白网页。我有它应该返回的 .cshtml 页面设置。
  • 欢迎来到 Stack Overflow。你到底想在这里做什么?您在问题中说“页面旨在返回一个数字”,并且在您的一个 cmets 中说“它应该返回一个空白网页”。这是两件不同的事情。 方法 OnPost 应该返回一个数字吗?如果是这样,它不是。它返回一个Page。返回的Page 是否应该在某处有数字?好吧,怎么可能呢,Page 从来没有被告知这个数字应该是多少。我认为你需要退后一步,想想你在这里想要完成什么。
  • 明天我会发布更多,因为我不在我的电脑前。我有页面拉数字,但它总是返回 0 或 null。我应该在页面上发布代码吗?

标签: c# html css asp.net asp.net-core


【解决方案1】:

您正在返回一个 Page()。您应该返回要包装在 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);
}

【讨论】:

  • 我试过这个方法。 Visual Stuido 抱怨“好的”部分。
  • 错误是什么?
  • 您可能需要导入相关的包。尝试单击错误并按Ctrl + . 这应该会打开一个小窗口,其中可能有一个分辨率。然后只需按回车键。
  • 刚刚尝试使用该方法,它只是在该方法下方导入一个私有类。在那个类中,它只是抛出一个“未实现”异常并关闭浏览器。
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多