[英]Kendo DropDownList always passing the same value from view to 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.