如何在同一控制器方法/视图中多次使用隐藏值?

时间:2009-10-05 03:17:10

标签: c# asp.net-mvc hidden-field

我有一个列出目录列表的方法,你可以在目录中钻取。该方法如下所示:

           public ActionResult ListObjects(string Prefix)
           {
             if(string.isnullorempty(Prefix))
                //Present root files and directories
             else
                //Present directory choosed with Prefix
           }

在视图ListObjects上,我遇到Prefix hidden字段,它在第一次有值后没有改变值。我证明通过添加和额外的字段确实在第一次有一个之后更改了值。例如:第一次处理listobjects方法前缀为null,而item.prefix具有每个目录的第一个值,但是在第一个视图中单击任何目录后,第二次调用控制器时实际值为never变化。

                <%= Html.Hidden("Prefix",item.Prefix) %>
                <%= Html.Hidden("TestVariable" ,item.Prefix) %>

这是实际发生的事情的一个小证据。

   <input id="Prefix" type="hidden" value="CP/" name="Prefix"/>
   <input id="TestVariable" type="hidden" value="CP/CPTest/" name="TestVariable"/>

我的目标是在每次调用时更改输入id =“Prefix”,并在第一次获取值后不保持静态。正如您所看到的,Prefix上方的两个输入字段具有CP,而testvariable具有cp / cptest,这是我想要的值,但两个输入字段都来自同一个变量。

编辑2:

我认为这与字符串是引用这一事实有关,因为mvc框架看到Prefix具有来自先前请求的值,它会覆盖来自model.Prefix的新值赋值。


注意:我昨天发布了这个问题,经过一些故障排除后我自己回答了这个问题。我找到的解决方案并不理想,但是工作正常,除非有人能够给我一个更好的方法来实现同样的目标。请告诉我。地理位置

2 个答案:

答案 0 :(得分:0)

也许是因为你第二次处理listobjects时你的标志不是null也不是空的。您正在更改第一次调用中对象的状态。

答案 1 :(得分:0)

我确信这不是理想的解决方案,但我通过不使用MVC帮助程序文件解决了我的问题。而不是使用Html.Hidden帮助器,我直接使用输入字段如下:

  <%--<%= Html.Hidden("Prefix",item.Prefix) %>--%>                
  <input id="Prefix" type="hidden" value="<%= item.Prefix %>" name="Prefix" />  

这就像一个魅力,如果你想到html.Hidden无效的原因,请告诉我。