【问题标题】:MVC Multiple submit buttons on a array of objectsMVC 对象数组上的多个提交按钮
【发布时间】:2010-04-20 09:46:32
【问题描述】:

我在 MVC 视图中有一个对象列表,每个对象都有一组提交按钮 - 上移、下移和移除。

使用来自this 问题的答案,我可以点击按钮 - 但我需要知道它将在哪个项目上运行。

问题来自输入的 value 属性被传回的事实,我需要更多信息 - 即 id。

下面是 for 循环内容的 sn-p,渲染每个项目。

<ul>
    <li><input type="submit" name="SubmitButton" value="Move-Up" class="linked-content-position-modifier" /></li>
    <li><input type="submit" name="SubmitButton" value="Move-Down" class="linked-content-position-modifier" /></li>
    <li><input type="submit" name="SubmitButton" value="Remove" class="linked-content-modifier" /></li>
    <li><%= Model.Contents[i] %></li>
</ul>

当表单被回发时,我可以看到 SubmitButton 的值是 Move-Up、Move-Down 或 Remove - 但不知道它指的是数组中的哪个项目。

如果不将值更改为非常丑陋的东西,我怎么知道它指的是哪个项目?

【问题讨论】:

    标签: asp.net-mvc-2 http-post


    【解决方案1】:

    只是一个快速的想法,但也许您可以尝试将隐藏字段添加到每一行并查看哪个被提交?

    【讨论】:

      【解决方案2】:

      为什么要使用按钮?

      可以用链接代替吗?

      <a href="controller/MoveUp/<%= Model.Id %>">Move Up</a>
      

      我使用类似的代码来更新表中的项目,但我使用 javascript 并相应地更新表...

      <script type="text/javascript">
          $('img.action').click(function(){
              var itemId = this.attr('id'); // Do some parsing of the id here, i use a format of bi-##
      
              $.ajax({ uri: 'controller/MoveUp/' + itemId });
          });
      </script>
      

      【讨论】:

      • 它需要考虑禁用 Javascript 的人,因此需要发布信息,因为用户可能进行了其他需要维护的更改。
      • 因此,当 JS 退出时,链接应该仍然有效。它可以执行(获取)到带有附加 ID 的控制器,如我的示例中所示。该动作可以完成移动工作并返回原始视图。这次它将具有更新的排序顺序。抱歉,如果我不清楚我的两个示例是不同的想法。
      • GET(链接)对于操作来说不是一个好主意。 en.wikipedia.org/wiki/…
      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多