【问题标题】:How do I use a hidden value more than once in the same controller method/view?如何在同一个控制器方法/视图中多次使用隐藏值?
【发布时间】:2009-10-05 03:17:09
【问题描述】:

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

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

在 ListObjects 视图中,我遇到了 Prefix hidden field 在第一次有值后没有改变值。我通过添加一个额外的字段来证明这一点,该字段在第一次拥有一个值后会更改该值。例如:第一次处理listobjects方法prefix为null,item.prefix对每个目录都有第一个值,但是第一次视图点击任意目录后,第二次调用controller实际值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" 在每次调用中都发生变化,而不是在第一次获得值后保持不变。如您所见,前缀上方的两个输入字段有 CP,而 testvariable 有 cp/cptest,这是我想要的值,但是两个输入字段都取自同一个变量。

编辑2:

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


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

【问题讨论】:

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

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    这就像一个魅力,如果您想到 html.Hidden 不起作用的原因,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 2017-11-12
      • 2020-12-20
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多