【问题标题】:Multiple buttons in the same form同一个表单中的多个按钮
【发布时间】:2014-07-17 12:14:09
【问题描述】:

我有一个简单的form,里面有两个buttons。每个button 都必须在我的controller 中将我重定向到不同的view。我在网上寻找一些例子,找到了解决方案并实施了它们。不幸的是,它对我不起作用。

控制器:

public class HomeController : Controller
    {
        private MovieEntities db = new MovieEntities();

        [HttpGet]
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        [Button(ButtonName = "clickButton", ButtonValue = "Send")]
        public ActionResult Send()
        {
            return View();
        }

        [HttpPost]
        [Button(ButtonName = "clickButton", ButtonValue = "Reset")]
        public ActionResult Reset()
        {
            return View();
        }
    }

索引视图:

@model IEnumerable<CustomWizzardMVC.Models.MovieInfo>

@{
    ViewBag.Title = "Home";
}

<h1>Insert informations</h1>

@using(Html.BeginForm())
{
    <input type="button" name="clickButton" value="Send" />
    <input type="button" name="clickButton" value="Reset" />
}

发送重置视图只是简单的视图,里面有&lt;p&gt;标签。

我也有按钮类

public class Button : ActionNameSelectorAttribute 
    {
        public string ButtonName { get; set; }
        public string ButtonValue { get; set; }

        public override bool IsValidName(ControllerContext controllerContext, string actionName, System.Reflection.MethodInfo methodInfo)
        {
            return controllerContext.HttpContext.Request[ButtonName] != null && controllerContext.HttpContext.Request[ButtonName] == ButtonValue; 
        }
    }

我在这里做错了什么?另外,如果您知道其他方法可以实现相同的功能不使用 jQuery,请发布一些代码 :)

【问题讨论】:

  • 我建议你使用@Html.ActionLink()-s。

标签: asp.net asp.net-mvc-4 button


【解决方案1】:

您可以通过表单的 action 属性来配置表单的目标。

因此,您可以通过更改表单的操作属性来做到这一点。您需要使用客户端脚本来执行此操作。

另一个选项,您可以发送一个包含用户选项的值(如 Option = "reset" 或 Option = "send")。并决定您需要在默认视图中使用什么视图。

【讨论】:

  • 找到了如何做到的。 &lt;input type="submit" value="Send" formaction="@Url.Action("Send","Home")" /&gt; 刚刚发现formaction 是新的HTML5 属性,它为HttpPost 操作指定表单的URL。 :)
  • 很好,我不知道 :)
【解决方案2】:

将您的输入 type="button" 更改为 type="submit.

&lt;input type="button" /&gt; 按钮不会提交表单 - 默认情况下它们不会执行任何操作。它们通常与 JavaScript 结合使用,作为 AJAX 应用程序的一部分。

&lt;input type="submit"&gt; 按钮将在用户单击它们时提交它们所在的表单,除非您使用 JavaScript 另有指定。

【讨论】:

  • 查看上面的帖子,我写道我发现了它是如何做到的:) 基本上和你写的一样:)
【解决方案3】:

找到了如何做到这一点。 &lt;input type="submit" value="Send" formaction="@Url.Action("Send","Home")" /&gt; 刚刚发现formaction 是新的HTML5 属性,它为HttpPost 操作指定表单的URL。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 2017-10-04
    • 1970-01-01
    • 2016-12-01
    • 2011-03-20
    • 2016-06-12
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多