繁体   English   中英

查看为 Controller 提供相同的值

[英]View providing the same value to Controller

我正在尝试编写一个简单的数字检查程序。 您输入了正确的下一位数字 - 它会显示下一位,如果不是 - 没有任何反应。 在 Controller 中,我试图:设置变量的值,递增它,传递给特定的视图(howManyDigits)。 我知道我可以将 howManyDigits 设为 session 变量,但这里的重点是要了解为什么这个数字仍然会回到例如。 在应用程序第一次运行后在 View1 中输入的“2”。

Pi控制器:

namespace PI.Controllers
{
    public class PiController : Controller
    {
        [HttpGet]
        public ActionResult View1()
        {
            return View();
        }

        [HttpPost]
        public ActionResult View2(Pinumber number)
        {
            if (number.tabPi[number.howManyDigits] != number.numberEntered)
                number.howManyDigits++;

            return View(number);

        }

    }
}

视图1:

@model PI.Models.Pinumber

@using (Html.BeginForm("View2", "Pi", FormMethod.Post))
{
    @Html.TextBoxFor(number => number.howManyDigits,new { autofocus = "autofocus"})

    <input type="submit" value="How many numbers do you know?" />
} 

在这个视图中,我有 BeginForm,我正在尝试使用 HiddenFor 和 Lambda 表达式将此变量传递回相同的 Controller。

视图2:

@model PI.Models.Pinumber

<div>
    3.@for (int i = 0; i < Model.howManyDigits; i++)
    {
        @Model.tabPi[i]
    }
</div>

@using (Html.BeginForm("View2", "Pi", FormMethod.Post))
{
    @Html.HiddenFor(x=> x.howManyDigits)
    @Html.TextBoxFor(x => x.numberEntered, new { autofocus = "autofocus" })

}

Model class 编号:

namespace PI.Models
{
    public class Pinumber
    {
        public char[] tabPi { get; set; } = new char[100000];
        public Pinumber()
        {
                for (int i = 0; i < 20; i++)
                {
                    tabPi[i] = piNumber[i];
                }
        }
        public int howManyDigits { get; set; }
        public char numberEntered { get; set; }

        public string piNumber = "141592653589793238462"

不幸的是,它会回到 Controller 并带有我在其他 View1 中输入的旧值,该值仅用于显示带有您已经知道的输入位数的起始站点 - [HttpGet]。

事情不是这样的。

看,如果你增加一些 int 变量的值,比如说从 1 到 2,然后你将它传递给视图。 然后你想把它从 2 增加到 3,你需要把那个 2 从 View(从 HTML 代码)发送回后端,然后在那里增加它,否则,价值会丢失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM