2012-06-17 48 views
1

我想尝试在我的MVC表单中分配一个变量值来输入隐藏字段。我以为我可以这样做,但变量的价值并没有被放到隐藏的领域。 任何想法,为什么这是一个错误的方式?ASP.NET MVC - 分配变量到输入隐藏字段

注意:在变量声明之间有一些代码...我只是想让事情变得简单。代码的特定行的错误我是:@value = @secondNumber

@{ 
    ViewBag.Title = "Jakub Holovsky - Contact"; 

    Random randomNumber = new Random(); 
    int firstNumber = randomNumber.Next(0, 11); 
    int secondNumber = randomNumber.Next(0, 11); 
    int sumNumber = firstNumber + secondNumber; 
} 

<div class="divLeftSide"> 
         <span>How much is @firstNumber + @secondNumber:</span> 
         @Html.TextBoxFor(m => m.FirstNumber, new { @type = "number", @id = "firstNumber", @class = "HiddenField", @value = @firstNumber }) 
         @Html.TextBoxFor(m => m.SecondNumber, new { @type = "number", @id = "secondNumber", @class = "HiddenField", @value = @secondNumber }) 
        </div> 

回答

0

1)创建一个名为SomeModel的模型类。该类应该包含名为FirstNumber和SecondNumber的属性。

2)行

@model SomeModel 

添加到您的视图。

3)移动

Random randomNumber = new Random(); 
int firstNumber = randomNumber.Next(0, 11); 
int secondNumber = randomNumber.Next(0, 11); 
int sumNumber = firstNumber + secondNumber; 

到控制器中的作用。

4)在你的控制器的动作,初始化SomeModel命名模型的新实例和FirstNumber设置为firstNumber和SecondNumber到secondNumber

5)通过调用返回查看(模型)传递模型视图;

6)从您的视图中删除@value = @firstNumber和@value = @secondNumber。

+0

你好,非常感谢你的回答,它有点帮助我更了解整个事情。但是这个想法是在控制器上生成随机数字,然后通过它显示。用户将填写这两个数字的总和的结果,并将其传回给我的控制器。我如何将这些数字保存在某处我指的是这两个?我该如何坚持自己的价值观?谢谢 –

+0

你现在可以做你正在做的事情,比如使用@@ Html.TextBoxFor,或者你可以使用默认隐藏的@@ Html.HiddenFor。然后在你的控制器中添加方法[HttpPost] public ActionResult SomeAction(SomeModel model),参数模型将从视图中的@@ Html.HiddenFor中获取FirstNumber和SecondNumber。您可能还想要将另一个属性TheirSum添加到SomeModel以便显示文本框@@ Html.TextBoxFor(m => m.TheirSum)并在控制器中检索其值。 –

+0

谢谢!这帮助了我。还有一件事,MVC中保持状态的最推荐的方式是什么。会话吗? –