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

C# 如何在同一控制器方法/视图中多次使用隐藏值?,c#,asp.net-mvc,hidden-field,C#,Asp.net Mvc,Hidden Field,我有一个列出目录的方法,你可以钻取目录。方法如下所示: public ActionResult ListObjects(string Prefix) { if(string.isnullorempty(Prefix)) //Present root files and directories else //Present director

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

           public ActionResult ListObjects(string Prefix)
           {
             if(string.isnullorempty(Prefix))
                //Present root files and directories
             else
                //Present directory choosed with Prefix
           }
在view ListObjects上,我遇到了前缀隐藏字段在第一次有值后没有改变值的情况。我通过添加和额外的字段证明了这一点,该字段在第一次有值后确实会改变值。例如:第一次处理listobjects方法前缀时为空,item.prefix具有每个目录的第一个值,但在第一个视图中单击任何目录后,第二次调用控制器时,实际值不会更改

                <%= 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”在每次调用中都改变,而不是在第一次得到值后保持静态。正如您所看到的,前缀上方的两个输入字段具有CP,而testvariable具有CP/cptest,这是我想要的值,但是两个输入字段都来自同一个变量

编辑2:

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



注意:我昨天发布了这个问题,经过一点故障排除后,我自己回答了这个问题。我找到的解决方案不是理想的,而是可行的,我已经完成了,除非这里有人能给我一个更好的方法来实现同样的目标。请让我知道。Geo

可能是因为第二次处理listobjects时,您的标记既不为null也不为空。您正在第一次调用中更改对象的状态。

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

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


如果你想一想html.Hidden不起作用的原因,请告诉我。

C#中的参数名称通常是小写。我已经尝试过了,但没有成功。这是一个样式问题,不会改变应用程序的工作方式。