【问题标题】:How to detect which submit button was clicked in asp.net (mvc)如何检测在asp.net(mvc)中单击了哪个提交按钮
【发布时间】:2014-10-13 02:06:35
【问题描述】:

我已经阅读了大量使用提交类型输入值的答案,但是我的输入按钮集合需要全部具有相同的文本。其他人使用 Javascript,我也在努力避免这种情况。

<input type="submit" value="Press This" name="submitButton" />

不起作用,因为它们都需要命名为“Press This”。

<button type="submit" value="12" name="submitButton">Press This</button>

不起作用,因为它不发布值。

有没有办法让&lt;button&gt; 提交它的值或更改&lt;input type="submit"&gt; 的文本,以便它们在页面上都说相同但具有不同的值?或者甚至可能将数值隐藏在输入元素的 value 属性中,然后在使用该值之前删除“Press This”?

也许将&lt;input type="image" value="12" /&gt; 与显示“Press This”的图片一起使用?

编辑:尝试了&lt;input type="image"&gt;,但它不起作用。它会提交表单,但它不使用 name 属性在控制器上执行正确的操作。

Edit2:我还应该补充一点,提交按钮的数量是动态的,因此我不能给它们所有不同的名称,然后查看控制器中的哪个参数有传递给它的值。除非有某种方法可以对未知数量的按钮执行此操作...

【问题讨论】:

  • @WahidBitar 这不是重复的,因为该解决方案要求提交的值等于显示的值,而我需要它们不同(提交的值是一个数字,显示的值是“Press This”在所有提交按钮上)。
  • 但在您的代码中,第一个按钮的值不是数字
  • @WahidBitar 因为如果我将它设为我需要的数字,那将是它在页面上的显示方式。对于第一种工作方式,我需要将值同时设置为“Press This”和“12”,这就是问题所在。
  • 你确定Action有参数string submitButton ??

标签: html asp.net-mvc button input submit


【解决方案1】:

您的按钮应如下所示:

<button name="button" value="12">Press This</button>
<button name="button" value="13">Press That</button>

然后让他们参与进来

public ActionResult MyAction(string button)
{
    if (button == "12"){
        //Do this
    }

    if (button == "13"){
        //Do that
    }
}

【讨论】:

  • 你可以在这篇文章weblogs.asp.net/dfindley/…找到更多有用的信息
  • 我试过了,不管按什么,我都只会收到一个 0。输入 type=submit 上的相同名称确实回发了该值。按钮必须命名有什么特别的问题吗?
  • 我今天早上重新测试,它正在工作。我现在对发生的事情感到困惑,但它确实有效。
  • 也许你没有第一次重建你的解决方案!。无论如何它现在正在工作:)
  • 如果使用VS调试,别忘了在右下角的通知图标托盘中杀死IIS Express工具,或者新的JS等,可能无法进入您的测试浏览器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 2012-10-02
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 2010-10-18
相关资源
最近更新 更多