簡體   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