代码之家  ›  专栏  ›  技术社区  ›  Geo

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

  •  0
  • Geo  · 技术社区  · 15 年前

    我有一个列出目录的方法,您可以在目录中钻取。方法如下:

               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框架看到前缀具有来自先前请求的值,所以它会覆盖model.prefix中的新值分配。


    注意:我昨天发布了这个问题,经过一点故障排除后我自己回答了这个问题。我发现的解决方案不是理想的,而是有效的,我已经完成了,除非这里有人能给我一个更好的方法来实现这个目标。请告诉我。地理信息系统

    2 回复  |  直到 15 年前
        1
  •  0
  •   Juparave    15 年前

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

        2
  •  0
  •   Geo    15 年前

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

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

    这很有魅力,如果你想一想HTML.hidden不起作用的原因,请告诉我。