![](/img/trans.png)
[英]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.