【问题标题】:MVC - multiple Html.SubmitImage buttons for one form that uses Ajax.BeginFormMVC - 一个使用 Ajax.BeginForm 的表单的多个 Html.SubmitImage 按钮
【发布时间】:2010-11-06 09:29:58
【问题描述】:

ASP.NET MVC - Multiple Buttons on a Form

这也是我想要做的,除了第一个答案不满足我的要求,第二个使用 formcollection。我没有通过 formcollection。我将值传递给 ActionResult 方法,因为在我的场景中,使用 formcollection 没有多大意义,因为用户几乎没有填写任何数据。

我现在真的更喜欢使用 SubmitImage,所以如果你的解决方案不涉及我切换到 css 或输入类型等,我会更喜欢。

编辑:我使用的是 Ajax.BeginForm,这似乎是问题所在,而不是 Html.SubmitImage

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    确定按下哪个按钮(不使用 Javascript)的唯一方法是检查您提交表单时浏览器发送的数据。这与用户是否填写表单无关,只与您如何向服务器发出请求有关。

    如果在表单中使用POST方法,则在表单集合中获取按钮的名称,否则在查询字符串集合中获取。

    在按钮中,只有用于发布表单的按钮包含在数据中,因此您只需检查哪个按钮存在:

    if (Request.Form["Save.x"] != null) {
      // the save button was used
    } else if (Request.Form["Delete.x"] != null) {
      // the delete button was used
    } else if (Request.Form["Publish.x"] != null) {
      // the publish button was used
    } else if (Request.Form["Cancel.x"] != null) {
      // the cancel button was used
    } else {
      // you got here some other way
    }
    

    【讨论】:

    • Cat.x...这里的x是什么意思?
    • 我正在使用 Ajax.BeginForm... 并且它们都显示为 null。
    • @progtick:当您按下图像按钮时,您在图像中单击的 x 和 y 坐标将发送到服务器。
    • @progtick:如果您使用 Ajax 执行请求而不是发布表单,您可能必须在发送请求之前捕获使用了哪个按钮,并将该信息添加到数据中发送到服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2022-11-24
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多